当前位置: 移动技术网 > IT编程>移动开发>Android > 用一个小程序设计来讲述Android的入门开发

用一个小程序设计来讲述Android的入门开发

2018年09月20日  | 移动技术网IT编程  | 我要评论

深圳购房网,山河英雄志txt下载,美元图片

初次接触android内容,这次首先从android的一些基本概念以及一些基本的ui开始,作为android的入门吧。以教材中的geoquiz为例。

本应用由一个activity和一个布局(layout)组成。

activity是android sdk中activity类的一个实例,负责管理用户与应用界面的交互。 应用的功能是通过编写activity子类来实现的。对于简单的应用来说,一个activity子类可能就够了,而复杂的应用则会有多个。

布局定义了一系列用户界面对象以及它们显示在屏幕上的位置。组成布局的定义保存在 xml文件中。每个定义用来创建屏幕上的一个对象,如按钮或文本信息。

安装和创建android项目就不必再说了,不是特别复杂,按照步骤一步一步走问题不大。

下面总结介绍一些基本的操作。

1. 用户界面设计

首先打开app/res/layout/activity_quiz.xml文件。比如在本例中形成的代码如下:

  <linearlayout xmlns:android = "https://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center"
    android:orientation = "vertical">

    <textview
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:text="@string/question_text" />

    <linearlayout
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:orientation = "horizontal">

        <button
            android:id="@+id/true_button"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/true_button" />

        <button
            android:id="@+id/false_button"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/false_button" />

    </linearlayout>

</linearlayout>

应用activity的默认布局定义了两个组件(widget):relativelayout和textview。 组件是用户界面的构造模块。组件可以显示文字或图像,与用户交互,甚至布置屏幕上的其 他组件。按钮、文本输入控件和选择框等都是组件。 android sdk内置了多种组件,通过配置各种组件可获得所需的用户界面及行为。每一个组 件都是view类或其子类(如textview或button)的一个具体实例。

下面介绍一些常用的组件属性。

(1). android:layout_width和android:layout_height属性

几乎每类组件都需要android:layout_width和android:layout_height属性。以下是它们的两个常见属性值(二选一)。

match_parent:视图与其父视图大小相同。

wrap_content:视图将根据其显示内容自动调整大小。

textview组件比其包含的文字内容区域稍大一些,这主要是android:padding="24dp"属性的作用。该属性告诉组件在决定大小时,除内容本身外,还需增加额外指定量的空间。这样屏幕上显示的问题与按钮之间便会留有一定的空间,使整体显得更为美观。

(2). android:orientation属性

android:orientation属性是两个linearlayout组件都具有的属性,它决定两者的子组件是水平放置还是垂直放置。子组件的定义顺序决定其在屏幕上显示的顺序。在垂直的linearlayout中,第一个定义的子组件出现在屏幕的最上端;而在水平的linearlayout中,第一个定义的子组件出现在屏幕的最左端。

(3). android:text属性

textview与button组件具有android:text属性。该属性指定组件要显示的文字内容。android:text属性值不是字符串值,而是对字符串资源(string resource)的引用。

字符串资源包含在一个独立的名叫strings的xml文件中(strings.xml),虽然可以硬编码设置 组件的文本属性值,如android:text="true",但这通常不是个好主意。比较好的做法是:将文字内容放置在独立的字符串资源xml文件中,然后引用它们。

之后创建刚刚说到的字符串资源。每个项目都包含一个默认字符串资源文件strings.xml。在项目工具窗口中,找到app/res/values目录,展开目录,打开strings.xml文件。然后在其中添加字符串资源息。

2.从布局 xml到视图对象

activity_quiz.xml中的xml元素转换为视图对象在于quizactivity 类。在创建geoquiz项目的同时,向导也创建了一个名叫quizactivity的activity子类。quizactivity类文件存放在项目的app/java目录下。java目录是项目全部java源代码的存放处。在项目工具窗口中,依次展开app/java目录与com.bignerdranch.android.geoquiz包。找到并打开quizactivity.java文件,查看其中的代码。它实际就是一个activity子类,能为android旧版本提供兼容支持。该java类文件有一个activity方法:oncreate(bundle)。 activity子类的实例创建后,oncreate(bundle)方法会被调用。activity创建后,它需要获取 并管理用户界面。要获取activity的用户界面,可调用以下activity方法: public void setcontentview(int layoutresid) 根据传入的布局资源id参数,该方法生成指定布局的视图并将其放置在屏幕上。布局视图生成后,布局文件包含的组件也随之以各自的属性定义完成实例化。

资源与资源 id

布局是一种资源。资源是应用非代码形式的内容,如图像文件、音频文件以及xml文件等。

项目的所有资源文件都存放在目录app/res的子目录下。在项目工具窗口中可以看到,activity_quiz.xml布局资源文件存放在res/layout/目录下。strings.xml字符串资源文件存放在 res/values/目录下。

可以使用资源id在代码中获取相应的资源。activity_quiz.xml布局的资源id为r.layout. activity_quiz。

3.组件的实际应用

按钮有了资源id,就可以在quizactivity中直接获取它们。首先,在quizactivity.java文件中增加两个按钮成员变量。此时有错误提示:cannot resolve symbol 'button' 。此时需要在quizactivity.java文件中导入android.widget.button类包。可在文件 头部手动输入以下代码: import android.widget.button; 或者使用option+return(alt+enter)组合键,让android studio自动导入。

组件设置好之后便可以进行引用。在activity中,可调用以下activity方法引用已生成的组件:public view findviewbyid(int id) 该方法以组件的资源id作为参数,返回一个视图对象。

设置监听器。为响应某个事件而创 建的对象叫作监听器(listener)。监听器会实现特定事件的监听器接口(listener interface)。无需自己动手,android sdk已经为各种事件内置了很多监听器接口。当前应用需要监听用户的按钮“点击”事件,因此监听器需实现view.onclicklistener接口。 (这个地方和之前接触到的ios的o似乎有一点相似。 )

附:quizactivity.jaca代码

package com.bignerdranch.android.geoquiz;

import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.widget.toast;

public class quizactivity extends appcompatactivity {
    private button mtruebutton;
    private button mfalsebutton;

    @override                                  //重写函数
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_quiz);

        mtruebutton = (button) findviewbyid(r.id.true_button);
        mtruebutton.setonclicklistener(new view.onclicklistener() {    //最外层一对括号内的全部代码就是传入setonclicklistener (onclicklistener)方法的参数
                                           @override
                                           public void onclick(view v)
                                           {
                                               toast.maketext(quizactivity.this,
                                                       r.string.correct_toast,
                                                       toast.length_short).show();
                                           }
        });
        mfalsebutton = (button) findviewbyid(r.id.false_button);
        mfalsebutton.setonclicklistener(new view.onclicklistener() {    //最外层一对括号内的全部代码就是传入setonclicklistener (onclicklistener)方法的参数
            @override
            public void onclick(view v)
            {
                toast.maketext(quizactivity.this,
                        r.string.incorrect_toast,
                        toast.length_short).show();
            }
        });
    }
}

这里,一个匿名内部类(anonymous inner class)实现了onclicklistener接口。

监听器以匿名内部类来实现有两大好处。第一,使用匿名内部类,可以相对集中地实现监听器方法,一眼可见;第二,事件监听器一般只在一个地方使用,使用匿名 内部类,就不用去创建繁琐的命名类了。

4. 创建提示消息

分别点击两个按钮,弹出我们称之为toast的提示消息。android的toast 是用来通知用户的简短弹出消息,用户无需输入什么,也不用做任何干预操作。

调用toast类的以下方法,可创建toast:

public static toast maketext(context context, int resid, int duration)

该方法的context参数通常是activity的一个实例(activity本身就是context的子类) 。 第二个参数是toast要显示字符串消息的资源id。toast类必须借助context才能找到并使用字符 串资源id。第三个参数通常是两个toast常量中的一个,用来指定toast消息的停留时间。 创建toast后,可调用toast.show()方法在屏幕上显示toast消息。

到此为止可以进行应用程序的运行了,但是由于电脑原因模拟器无法运行,所以也就没能看一看最终的成果。

通过这一个小程序的设计,对android应用程序有了一个初步的认识,对程序的设计流程和层次设计也加深了了解。并且在做的过程中,由于可视化元素的存在,发现还是挺容易产生兴趣的。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网