一、概述
Android的控件体系分为三个类别:
1、基本控件
2、布局
3、容器
这三类控件主要分布在两个包中:
1android.view 提供抽象接口
2android.widget 提供系统内置的大部分控件
整个系统得控件都继承自android.view.View ,而布局及容器类继承自android.view.ViewGroup
基本控件主要包括ImageViewProgressBarSurfaceViewTextViewEditText等。
布局
虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局的结构,而是每种Layout就是一中特殊的面板,包括AbsoluteLayoutFrameLayoutLinearLayoutTableLayoutRelativeLayout等。
容器
这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListViewGridViewGallerySpinner等。
二、android常用控件
android常用控件之TextView、EditView、Button、Menu
示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。 
项目运行效果图: 
开发步骤: 
1 新建一个Android项目 
2 在布局文件中依次添加EditTextTextViewEditTextButton(一定要按照界面上控件显示的顺序在布局文件中添加) 
3 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加) 
4 编写第一个Activity 
a) Activity继承androidActivity 
b) 重写ActivityonCreate()方法 
c) 设置这个Activity的布局文件 
d) 根据控件id获得控件对象 
e) 设置控件的值,这个值引用的是l中的值,所以还需要在l文件中设置(最好是使用l中的值,以便实现国际化);这个在布局文件中也能设置; 
5 新建一个ActivityResultActivity 
安卓intent用法
a) Activity继承androidActivity 
b) 重写ActivityonCreate()方法 
c) 设置这个Activity的布局文件 
d) 根据控件id获得控件对象 
6 在第一个Activity中编写Button 
a) 取得两个EditText控件的值 
b) 创建Intent对象 
c) 将这两个值存放到Intent对象当中 
d) 使用Intent对象启用ResultActivity 
e) 将与Button绑定 
7 在第二个ActivityResultActivity)中获得Intent对象 
a) 获得Intent对象中保存的值并强制转换成int类型 
b) 计算两个值的积 
c) 设置控件值 
8 在第一个Activity中,重写onCreateOptionsMenu()方法,这个方法是用于添加菜单中
的菜单项,我们添加两个菜单项 
9 再在第一个Activity中重写onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。判断,当点击退出的时候调用finish()方法 
android常用控件之RadioGroup RadioButton CheckBox Toast的使用
RadioGroupRadioButton的用法 
RadioGroupRadioButton的组。一个RadioGroup里面可以有多个RadioButton,但是只能选中其中的一个RadioButton 
示例:一个应用程序中有两个单选按钮,用于选择男或女。 
 开发步骤: 
1 新建一个Android应用程序 
2 编写l文件,添加一个RadioGroup标签(还可以设置此标签内的布局方向是水平布局还是垂直布局) 
3 RadioGroup标签内添加两个RadioButton 
4 编写Activity,先声明3个全局变量,用于接收这三个控件对象 
5 onCreate()方法内,根据控件id获得这三个对象并赋给相应的变量 
6 编写,实现的是RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的public void onCheckedChanged(RadioGroup group, int checkedId) 方法,这个方法的第一个参数是用来接收RadioGroup对象,第二个参数是用来接收被选中的RadioButtonID 
在这个方法里面可以做一系列的判断和操作,比如判断RadioButtonid是否等于checkedId,如果等于就可以输出一句话或者使用Toast显示提示消息。 
7、将绑定到RadioGroup 
需要主要的是, 
a)、这里绑定的是RadioGroup对象而不是RadioButton对象 
b)、这里的实现的是RadioGroup.OnCheckedChangeListener()提供的接口。 
CheckBox的用法 
CheckBox复选框,相信大家都很了解了,这里就不多说了,直接上示例。 
示例:一个应用程序中有三个复选框,可以进行多选操作。 
 开发步骤: 
1 新建一个Android应用程序 
2 编写l文件,添加三个CheckBox标签 
3 编写Activity,先声明3个全局变量,用于接收这三个控件对象 
4 为每一个CheckBox都编写一个,该实现的是CompoundButton.OnCheckedChangeListener()提供的接口,需要重写里面的public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)方法,这个方法的第一个参数是用来接收CompoundButton对象,第二个参数是用来接收是否被选中, 
在这个方法里面可以做一系列的判断和操作,比如判断某个CheckBox有没有被选中 
5 将绑定在对应的CheckBox 
Toast的用法 
Toast主要用于提示信息,用起来很方便,一行代码就OK了。 
1 创建Toast对象 
makeText(Context context, CharSequence text, int duration); 
通过调用这个方法,返回一个Toast对象。 
第一个参数是上下文对象,通常是你的应用程序或者Activity对象, 
第二个参数就是要显示的文本内容,可以格式化文本 
第三个参数是持续多长时间来显示消息,有两个常量:LENGTH_SHORT 或者LENGTH_LONG 
2 调用show()方法显示。 
Toast toast = Toast.makeText(RadioTest.this, "female", Toast.LENGTH_SHORT); 
toast.show(); 
在前面的RadioButton示例中,当选中""的单选框时调用Toast
 有一点需要注意的是: 
RadioGroup的实现是RadioGroup.OnCheckedChangeListener()提供的接口,而CheckBox的实现的是CompoundButton.OnCheckedChangeListener()提供的接口 
为什么RadioGroupCheckBox实现的不是同一个接口呢? 
原因大概是因为: 
RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。 
CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。 
android常用控件之ProgressBar、ListView
ProgressBar(进度条)的使用 
示例:一个应用程序有2ProgressBar,让进度条显示进度。 
开发步骤: 
1 新建一个android项目 
2 l布局文件中先添加1ProgressBar控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示) 
3 l布局文件中再添加1ProgressBar控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示 
4 l布局文件中再添加一个Button控件 
5 Activity中编写代码,先获得这2ProgressBarButton对象 
6 然后编写一个,设置进度条的进度,当每点击一次Button,进度则增加10 
7 将绑定到Button对象上 
下图为l布局文件的片段: 
最后项目实现的效果为:
ListView的使用 
ListView的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解。
示例:一个应用程序有一个ListView,显示三行信息。 
最后项目实现的效果为: 

开发步骤: 
1 新建一个Android应用程序 
2 在布局文件中再添加一个LinearLayout(应用程序新建的时候默认的布局文件里就已经
有了一个LinearLayout,现在再添加一个),设置这个LinearLayout的一些属性。 
3 LinearLayout中添加一个ListView,并设置一些属性。 
4 新建一个布局文件,这个布局文件呢,是用来布局和显示ListView里面的内容的(我是这样理解的,不知道大家能不能理解哈)。先在这个布局文件中添加一个LinearLayout,然后在LinearLayout中添加两个TextView,表示显示两列数据(如果需要显示多列数据的话当然就是添加多个TextView了)。 
Xml代码 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="1dip"
android:paddingBottom="1dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
>
<TextView
android:id="@+id/user_name"
android:layout_width="180dip"
android:layout_height="30dip"
android:textSize="10pt"
android:singleLine="true"
/>
<TextView
android:id="@+id/user_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:gravity="right"
/>
</LinearLayout>
5 编写Activity 
a) 首先要注意的是,这个Activity他继承的不是Activity,而是ListActivity 
b) 创建一个ArrayList,里面存放的是HashMap,而HashMap的键值对都是String类型。 
c) 分别往3HashMap中存储值 
d) 3HashMap添加到ArrayList 
e) 创建适配器 
f) 绑定到适配器 
g) 编写行的点击事件 
Java代码 
package android.listview;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
//注意:这里继承的是ListActivity,而不是Activity
public class ListViewTest extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Create(savedInstanceState);
setContentView(R.layout.main);
// 创建一个ArrayListArrayList里面存放的是HashMap,而HashMap的键值对都是String类型
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。