一、概述
Android的控件体系分为三个类别:
1、基本控件
2、布局
3、容器
这三类控件主要分布在两个包中:
1、android.view 提供抽象接口
2、android.widget 提供系统内置的大部分控件
整个系统得控件都继承自android.view.View ,而布局及容器类继承自android.view.ViewGroup。
基本控件主要包括ImageView、ProgressBar、SurfaceView、TextView、EditText等。
布局
虽然布局跟容器均继承自android.view.ViewGroup,但并不像SWT那样提供了面板+布局的结构,而是每种Layout就是一中特殊的面板,包括AbsoluteLayout、FrameLayout、LinearLayout、TableLayout、RelativeLayout等。
容器
这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListView、GridView、Gallery、Spinner等。
二、android常用控件
android常用控件之TextView、EditView、Button、Menu
示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。
项目运行效果图:
示例:一个计算应用程序,输入2个数字,点击按钮进行计算两个数的积并且返回结果。当点击模拟器右侧的Menu按钮,在输入界面中显示一个有关于和退出的菜单。
项目运行效果图:
开发步骤:
1、 新建一个Android项目
2、 在布局文件中依次添加EditText、TextView、EditText、Button(一定要按照界面上控件显示的顺序在布局文件中添加)
3、 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加)
4、 编写第一个Activity
a) 让Activity继承android的Activity
b) 重写Activity的onCreate()方法
c) 设置这个Activity的布局文件
d) 根据控件id获得控件对象
e) 设置控件的值,这个值引用的是l中的值,所以还需要在l文件中设置(最好是使用l中的值,以便实现国际化);这个在布局文件中也能设置;
5、 新建一个Activity,ResultActivity
安卓intent用法1、 新建一个Android项目
2、 在布局文件中依次添加EditText、TextView、EditText、Button(一定要按照界面上控件显示的顺序在布局文件中添加)
3、 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加)
4、 编写第一个Activity
a) 让Activity继承android的Activity
b) 重写Activity的onCreate()方法
c) 设置这个Activity的布局文件
d) 根据控件id获得控件对象
e) 设置控件的值,这个值引用的是l中的值,所以还需要在l文件中设置(最好是使用l中的值,以便实现国际化);这个在布局文件中也能设置;
5、 新建一个Activity,ResultActivity
a) 让Activity继承android的Activity
b) 重写Activity的onCreate()方法
c) 设置这个Activity的布局文件
d) 根据控件id获得控件对象
6、 在第一个Activity中编写Button的
a) 取得两个EditText控件的值
b) 创建Intent对象
c) 将这两个值存放到Intent对象当中
d) 使用Intent对象启用ResultActivity
e) 将与Button绑定
7、 在第二个Activity(ResultActivity)中获得Intent对象
a) 获得Intent对象中保存的值并强制转换成int类型
b) 计算两个值的积
c) 设置控件值
8、 在第一个Activity中,重写onCreateOptionsMenu()方法,这个方法是用于添加菜单中
b) 重写Activity的onCreate()方法
c) 设置这个Activity的布局文件
d) 根据控件id获得控件对象
6、 在第一个Activity中编写Button的
a) 取得两个EditText控件的值
b) 创建Intent对象
c) 将这两个值存放到Intent对象当中
d) 使用Intent对象启用ResultActivity
e) 将与Button绑定
7、 在第二个Activity(ResultActivity)中获得Intent对象
a) 获得Intent对象中保存的值并强制转换成int类型
b) 计算两个值的积
c) 设置控件值
8、 在第一个Activity中,重写onCreateOptionsMenu()方法,这个方法是用于添加菜单中
的菜单项,我们添加两个菜单项
9、 再在第一个Activity中重写onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。判断,当点击退出的时候调用finish()方法
9、 再在第一个Activity中重写onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。判断,当点击退出的时候调用finish()方法
android常用控件之RadioGroup RadioButton CheckBox Toast的使用
RadioGroup、RadioButton的用法
RadioGroup是RadioButton的组。一个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对象,第二个参数是用来接收被选中的RadioButton的ID。
在这个方法里面可以做一系列的判断和操作,比如判断RadioButton的id是否等于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()提供的接口
为什么RadioGroup和CheckBox实现的不是同一个接口呢?
原因大概是因为:
在RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。
而CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。
RadioGroup、RadioButton的用法
RadioGroup是RadioButton的组。一个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对象,第二个参数是用来接收被选中的RadioButton的ID。
在这个方法里面可以做一系列的判断和操作,比如判断RadioButton的id是否等于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()提供的接口
为什么RadioGroup和CheckBox实现的不是同一个接口呢?
原因大概是因为:
在RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。
而CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。
android常用控件之ProgressBar、ListView
ProgressBar(进度条)的使用
示例:一个应用程序有2个ProgressBar,让进度条显示进度。
开发步骤:
1、 新建一个android项目
2、 在l布局文件中先添加1个ProgressBar控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示)
3、 在l布局文件中再添加1个ProgressBar控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示
4、 在l布局文件中再添加一个Button控件
5、 在Activity中编写代码,先获得这2个ProgressBar和Button对象
6、 然后编写一个,设置进度条的进度,当每点击一次Button,进度则增加10
7、 将绑定到Button对象上
下图为l布局文件的片段:
ProgressBar(进度条)的使用
示例:一个应用程序有2个ProgressBar,让进度条显示进度。
开发步骤:
1、 新建一个android项目
2、 在l布局文件中先添加1个ProgressBar控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示)
3、 在l布局文件中再添加1个ProgressBar控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示
4、 在l布局文件中再添加一个Button控件
5、 在Activity中编写代码,先获得这2个ProgressBar和Button对象
6、 然后编写一个,设置进度条的进度,当每点击一次Button,进度则增加10
7、 将绑定到Button对象上
下图为l布局文件的片段:
最后项目实现的效果为:
ListView的使用
ListView的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解。
示例:一个应用程序有一个ListView,显示三行信息。
最后项目实现的效果为:
开发步骤:
1、 新建一个Android应用程序
2、 在布局文件中再添加一个LinearLayout(应用程序新建的时候默认的布局文件里就已经
最后项目实现的效果为:
开发步骤:
1、 新建一个Android应用程序
2、 在布局文件中再添加一个LinearLayout(应用程序新建的时候默认的布局文件里就已经
有了一个LinearLayout,现在再添加一个),设置这个LinearLayout的一些属性。
3、 在LinearLayout中添加一个ListView,并设置一些属性。
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) 分别往3个HashMap中存储值
d) 将3个HashMap添加到ArrayList中
e) 创建适配器
f) 绑定到适配器
g) 编写行的点击事件
a) 首先要注意的是,这个Activity他继承的不是Activity,而是ListActivity。
b) 创建一个ArrayList,里面存放的是HashMap,而HashMap的键值对都是String类型。
c) 分别往3个HashMap中存储值
d) 将3个HashMap添加到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);
// 创建一个ArrayList,ArrayList里面存放的是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小时内删除。
发表评论