Android编程典型实例与项目开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 AbsoluteLayout——绝对布局的应用

本节通过AbsoluteLayout绝对布局的应用,构建了一个软件登录界面,并通过本程序的实现介绍AbsoluteLayout绝对布局的具体应用。

1. 实例概述

本节构造了一个软件登录界面,在该界面中,可以输入姓名和密码,单击“确定”按钮,可以将所输入的姓名和密码显示到下方的文本编辑框中。单击“取消”按钮,则会清空所填写的姓名和密码。

2. 运行效果

本案例的运行效果图如图2-6所示。

图2-6 软件登录界面

提示:在图2-6中,实现了简单地输入数据并存储数据的功能。

3. 技术概要

本程序的开发主要运用了AbsoluteLayout绝对布局的相关知识。所谓绝对布局是指由开发人员通过给出控件的坐标在容器中摆放控件,容器就不再负责这个工作了。在该界面开发中,用到了TextView文本框控件,单行EditText控件、Button按钮控件、ScrollView滚动控件和多行EditText控件。

4. 核心代码

首先介绍的是本程序的主界面main.xml的开发,代码如下。

代码位置:见随书光盘中源代码/第2章/Sample2_6/ res/layout目录下的main.xml。

      1  <?xml version="1.0" encoding="utf-8"?>
      2  <AbsoluteLayout
      3      android:id="@+id/AbsoluteLayout01" android:layout_width="fill_parent"
      4      android:layout_height="fill_parent" android:background="#edab4a"
      5      xmlns:android="http://schemas.android.com/apk/res/android">
      6      <TextView
      7         android:layout_x="20dip" android:layout_y="20dip"
      8         android:layout_height="wrap_content" android:layout_width="wrap_content"
      9         android:id="@+id/TextView01" android:textColor="#FF0000"
      10        android:text="@string/uid">
      11     </TextView>                                 <!--TextView控件-->
      12     <TextView
      13        android:layout_x="20dip" android:layout_y="80dip"
      14        android:layout_height="wrap_content" android:layout_width="wrap_content"
      15        android:id="@+id/TextView02" android:textColor="#FF0000"
      16        android:text="@string/pwd">
      17     </TextView>                                 <!--TextView控件-->
      18     <EditText
      19        android:layout_x="80dip" android:layout_y="20dip"
      20        android:layout_height="wrap_content" android:layout_width="180dip"
      21        android:id="@+id/EditText01">
      22     </EditText>                                 <!--EditText控件-->
      23     <EditText
      24        android:layout_x="80dip" android:layout_y="80dip"
      25        android:layout_height="wrap_content" android:layout_width="180dip"
      26        android:id="@+id/EditText02"android:password="true"
      27     >                                   <!-- android:password设置是否为密码框 -->
      28     </EditText>
          <!--EditText控件-->
      29     <Button
      30        android:layout_x="155dip" android:layout_y="140dip"
      31        android:layout_height="wrap_content" android:id="@+id/Button01"
      32        android:layout_width="wrap_content" android:text="@string/ok">
      33     </Button>                                                 <!--Button控件-->
      34     <Button
      35        android:layout_x="210dip" android:layout_y="140dip"
      36        android:layout_height="wrap_content" android:id="@+id/Button02"
      37        android:layout_width="wrap_content" android:text="@string/cancel">
      38     </Button>                                                 <!--Button控件-->
      39     <ScrollView
      40        android:layout_x="10dip" android:layout_y="200dip"
      41        android:layout_height="220dip" android:layout_width="300dip"
      42        android:id="@+id/ScrollView01">
          <!--ScrollView控件-->
      43        <EditText
      44            android:layout_width="fill_parent" android:layout_height=
                    "wrap_content"
      45            android:id="@+id/EditText03" android:singleLine="false"
      46            android:gravity="top|center" android:enabled="false">
          <!--EditText控件-->
      47        </EditText>                         <!--EditText控件-->
      48     </ScrollView>
          <!--ScrollView控件-->
      49 </AbsoluteLayout>

提示: 在该XML文件中实现了布局的设置。总的布局为AbsoluteLayout布局。在总布局中,应用了TextView文本框控件、单行EditText控件、Button按钮控件、ScrollView滚动控件和多行EditText控件。通过对各个控件的属性设置,实现了该小软件的界面效果。

上面已经介绍了本程序的主界面main.xml的开发,接下来介绍的是本程序的具体功能的实现,代码如下。

代码位置:见随书光盘中源代码/第2章/Sample2_6/src/com/bn/ex2f目录下的Sample2_6_Activity.class。

      1  package com.bn. ex2f;                                   //包名
      2  ……//该处省略了部分类的导入,读者可自行查看随书光盘中的源代码
      3  import android.app.Activity;                            //导入相关类
      4  public class Sample2_6_Activity extends Activity {     //继承自Activity类
      5      public void onCreate(Bundle savedInstanceState) {   //实现onCreate()方法
      6         super.onCreate(savedInstanceState);              //继承自父类的onCreate()
      7         setContentView(R.layout.main);                   //显示main.xml界面
                //获取界面中的“确定”按钮对象
      8         final Button OkButton = (Button) findViewById(R.id.Button01);
                //获取界面中的“取消”按钮对象
      9         final Button cancelButton = (Button) findViewById(R.id.Button02);
      10        final EditText uid=(EditText)findViewById(R.id.EditText01);
      11        final EditText pwd=(EditText)findViewById(R.id.EditText02);
      12        final EditText log=(EditText)findViewById(R.id.EditText03);
      13    OkButton.setOnClickListener(                //负责监听鼠标单击事件
      14           new View.OnClickListener()   {       //为“确定”按钮添加监听器
      15            public void onClick(View v) {
      16               String uidStr=uid.getText().toString();//得到uid的字符串
      17               String pwdStr=pwd.getText().toString();//得到pwd的字符串
      18               log.append("用户名:"+uidStr+" 密码:"+pwdStr+"\n");//实现信息的存储
      19            }});
      20    cancelButton.setOnClickListener(                 //负责监听鼠标单击事件
      21               new View.OnClickListener(){           //为“取消”按钮添加监听器
      22                public void onClick(View v) {
      23                    uid.setText("");                      //清空输入文本
      24                    pwd.setText("");                      //清空输入文本
      25               }
      26          });
      27     }}

提示: 在Activity类中,获取了按钮对象,并对其添加了按钮监听器,实现了单击“确定”按钮存储输入信息和单击“取消”按钮清空输入信息的功能。