Android开发笔记之二 用户界面概述
来源:互联网 发布:淘宝垫付 编辑:程序博客网 时间:2024/05/16 23:56
Android用户界面概述
组成Android界面的控件可以分为两类。
一类用于显示信息,并同用户进行交互,称为显示控件(Widget),比如文本视图(TextView),按钮(Button)。这个跟Windows的控件概念类似,但是实现的方法不一样。
一类用于界面的布局,称为布局控件(Layout),比如linear layout,tabular layout。Windows 没有对应的概念。
下面从两个不同视角来看Widgets和Layouts的关系。
类层次
从内部实现上来看,他们都继承自基类View。不同的是Android还为layout实现了ViewGroup类来供layout类型的控件继承,ViewGroup直接继承自View。整个类图类似下图:
视图层次
从界面层次上来看,处于上层一般是一个布局控件,里边包含了各种Widgets和Layouts。因而layout也可以看做是容器控件,管理子控件在其内部的位置,大小等。用户界面的整个层次,可以看做一棵树,layouts是枝,widgets是叶。下图是一个示意图。
事件处理
显然,UI系统光显示界面给用户是不够的,它还需要能够跟用户进行交互。即能够根据用户的输入,进行相应的操作。用户的输入包括键盘按键,屏幕点击,轨迹球等。Android系统将这些输入转化为对应的输入事件(Input
Event),传递给当前view。我们需要做的是为view编写处理函数。
这些处理函数以什么样的形式存在的呢?Android在View里面为各类事件定义了监听接口, 比如:View.onClickListener, View.onTouchListener,
View.onKeyListener等。接口里分别定义了onClick(),onTouch(),onKey()成员函数,这就是我们需要编写代码的地方。然后通过setOnClickListener(),setOnTouchListener(),
setOnKeyListener()注册到对应View对象中去。
这里还是用一个例子来说明。我们在HelloWorld的main.xml增加一个Button,并添加了Button的click事件处理。修改下面两个文件:
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /><Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button></LinearLayout>
HelloWorldActivity.java
package com.droid.helloworld;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub Toast.makeText(HelloWorldActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();}}); }}
- Android开发笔记之二 用户界面概述
- Android开发之二:Android用户界面开发简介
- 笔记:Android用户界面--(二)
- Android UI布局之用户界面概述
- Android用户界面_UI概述
- 嵌入式linux系统开发概述之六----图形用户界面(GUI)
- 嵌入式linux系统开发概述之六----图形用户界面(GUI)
- [学习笔记]用户界面优化之Android Fragment
- [学习笔记]用户界面优化之Android ViewPager
- Android开发之响应用户界面的事件
- android开发------编写用户界面之相对布局
- android开发------编写用户界面之线性布局
- android开发------编写用户界面之相对布局
- (四) 用户界面开发过程概述
- Android 4.0 ICS 用户界面概述
- Android 4.0 ICS 用户界面概述
- Android开发入门学习笔记之二
- Android开发系列笔记 之二
- Oracle SQL Loader
- 新iPhone来了!苹果宣布10月4日召开新品发布会
- C 语言中什么是“句柄”和“指针”?“文件”和“流”又有什么异同?
- “cvc-complex-type.2.4.a: Invalid content was found starting with element 'taglib'”错误的解决办法
- asp.net调用自定义控件
- Android开发笔记之二 用户界面概述
- Android学习笔记Android必备开发工具之一命令行创建Git库
- 关于用Delphi开发的一些基本的套路
- Oracle SQL的优化
- UnrealScript自学笔记(三),小技巧杂记
- 数据库索引解析
- Flash Recovery Area空间不足导致数据库不能打开或hang住
- Objective-C中的字符串格式化输出
- Oracle 的 Sql*Plus 常用命令介绍