android开发常用控件及布局.docx

上传人:b****3 文档编号:6968567 上传时间:2023-05-10 格式:DOCX 页数:15 大小:434.46KB
下载 相关 举报
android开发常用控件及布局.docx_第1页
第1页 / 共15页
android开发常用控件及布局.docx_第2页
第2页 / 共15页
android开发常用控件及布局.docx_第3页
第3页 / 共15页
android开发常用控件及布局.docx_第4页
第4页 / 共15页
android开发常用控件及布局.docx_第5页
第5页 / 共15页
android开发常用控件及布局.docx_第6页
第6页 / 共15页
android开发常用控件及布局.docx_第7页
第7页 / 共15页
android开发常用控件及布局.docx_第8页
第8页 / 共15页
android开发常用控件及布局.docx_第9页
第9页 / 共15页
android开发常用控件及布局.docx_第10页
第10页 / 共15页
android开发常用控件及布局.docx_第11页
第11页 / 共15页
android开发常用控件及布局.docx_第12页
第12页 / 共15页
android开发常用控件及布局.docx_第13页
第13页 / 共15页
android开发常用控件及布局.docx_第14页
第14页 / 共15页
android开发常用控件及布局.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

android开发常用控件及布局.docx

《android开发常用控件及布局.docx》由会员分享,可在线阅读,更多相关《android开发常用控件及布局.docx(15页珍藏版)》请在冰点文库上搜索。

android开发常用控件及布局.docx

android开发常用控件及布局

一、开发概述

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按钮,在输入界面中显示一个有关于和退出的菜单。

 

项目运行效果图:

 

开发步骤:

 

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)设置控件的值,这个值引用的是string.xml中的值,所以还需要在string.xml文件中设置(最好是使用string.xml中的值,以便实现国际化);这个在布局文件中也能设置; 

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()方法,这个方法是用于添加菜单中的菜单项,我们添加两个菜单项 

9、再在第一个Activity中重写onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。

判断,当点击退出的时候调用finish()方法 

android常用控件之RadioGroupRadioButtonCheckBoxToast的使用

RadioGroup、RadioButton的用法 

RadioGroup是RadioButton的组。

一个RadioGroup里面可以有多个RadioButton,但是只能选中其中的一个RadioButton。

 

示例:

一个应用程序中有两个单选按钮,用于选择男或女。

 

 开发步骤:

 

1、新建一个Android应用程序 

2、编写main.xml文件,添加一个RadioGroup标签(还可以设置此标签内的布局方向是水平布局还是垂直布局) 

3、在RadioGroup标签内添加两个RadioButton 

4、编写Activity,先声明3个全局变量,用于接收这三个控件对象 

5、在onCreate()方法内,根据控件id获得这三个对象并赋给相应的变量 

6、编写监听器,监听器实现的是RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId)方法,这个方法的第一个参数是用来接收RadioGroup对象,第二个参数是用来接收被选中的RadioButton的ID。

 

在这个方法里面可以做一系列的判断和操作,比如判断RadioButton的id是否等于checkedId,如果等于就可以输出一句话或者使用Toast显示提示消息。

 

7、将监听器绑定到RadioGroup上 

需要主要的是, 

a)、这里绑定监听器的是RadioGroup对象而不是RadioButton对象 

b)、这里的监听器实现的是RadioGroup.OnCheckedChangeListener()提供的接口。

 

CheckBox的用法 

CheckBox复选框,相信大家都很了解了,这里就不多说了,直接上示例。

 

示例:

一个应用程序中有三个复选框,可以进行多选操作。

 

 开发步骤:

 

1、新建一个Android应用程序 

2、编写main.xml文件,添加三个CheckBox标签 

3、编写Activity,先声明3个全局变量,用于接收这三个控件对象 

4、为每一个CheckBox都编写一个监听器,该监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口,需要重写里面的publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked)方法,这个方法的第一个参数是用来接收CompoundButton对象,第二个参数是用来接收是否被选中, 

在这个方法里面可以做一系列的判断和操作,比如判断某个CheckBox有没有被选中 

5、将监听器绑定在对应的CheckBox上 

Toast的用法 

Toast主要用于提示信息,用起来很方便,一行代码就OK了。

 

1、创建Toast对象 

makeText(Contextcontext,CharSequencetext,intduration); 

通过调用这个方法,返回一个Toast对象。

 

第一个参数是上下文对象,通常是你的应用程序或者Activity对象, 

第二个参数就是要显示的文本内容,可以格式化文本 

第三个参数是持续多长时间来显示消息,有两个常量:

LENGTH_SHORT或者LENGTH_LONG 

2、调用show()方法显示。

 

Toasttoast=Toast.makeText(RadioTest.this,"female",Toast.LENGTH_SHORT); 

toast.show(); 

在前面的RadioButton示例中,当选中"女"的单选框时调用Toast。

 有一点需要注意的是:

 

RadioGroup的监听器实现是RadioGroup.OnCheckedChangeListener()提供的接口,而CheckBox的监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口 

为什么RadioGroup和CheckBox实现的不是同一个接口呢?

 

原因大概是因为:

 

在RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroupgroup,intcheckedId)方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。

 

而CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。

 

android常用控件之ProgressBar、ListView

ProgressBar(进度条)的使用 

示例:

一个应用程序有2个ProgressBar,让进度条显示进度。

 

开发步骤:

 

1、新建一个android项目 

2、在main.xml布局文件中先添加1个ProgressBar控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示) 

3、在main.xml布局文件中再添加1个ProgressBar控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示 

4、在main.xml布局文件中再添加一个Button控件 

5、在Activity中编写代码,先获得这2个ProgressBar和Button对象 

6、然后编写一个监听器,设置进度条的进度,当每点击一次Button,进度则增加10 

7、将监听器绑定到Button对象上 

下图为main.xml布局文件的片段:

 

最后项目实现的效果为:

ListView的使用 

ListView的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解。

示例:

一个应用程序有一个ListView,显示三行信息。

 

最后项目实现的效果为:

 

开发步骤:

 

1、新建一个Android应用程序 

2、在布局文件中再添加一个LinearLayout(应用程序新建的时候默认的布局文件里就已经有了一个LinearLayout,现在再添加一个),设置这个LinearLayout的一些属性。

 

3、在LinearLayout中添加一个ListView,并设置一些属性。

 

4、新建一个布局文件,这个布局文件呢,是用来布局和显示ListView里面的内容的(我是这样理解的,不知道大家能不能理解哈)。

先在这个布局文件中添加一个LinearLayout,然后在LinearLayout中添加两个TextView,表示显示两列数据(如果需要显示多列数据的话当然就是添加多个TextView了)。

 

Xml代码 

xmlversion="1.0"encoding="utf-8"?

>

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"

>

android:

id="@+id/user_name"

android:

layout_width="180dip"

android:

layout_height="30dip"

android:

textSize="10pt"

android:

singleLine="true"

/>

android:

id="@+id/user_ip"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

textSize="10pt"

android:

gravity="right"

/>

5、编写Activity 

a)首先要注意的是,这个Activity他继承的不是Activity,而是ListActivity。

 

b)创建一个ArrayList,里面存放的是HashMap,而HashMap的键值对都是String类型。

 

c)分别往3个HashMap中存储值 

d)将3个HashMap添加到ArrayList中 

e)创建适配器 

f)绑定到适配器 

g)编写行的点击事件 

Java代码 

packageandroid.listview;

importjava.util.ArrayList;

importjava.util.HashMap;

importandroid.app.ListActivity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.ListView;

importandroid.widget.SimpleAdapter;

//注意:

这里继承的是ListActivity,而不是Activity

publicclassListViewTestextendsListActivity{

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//创建一个ArrayList,ArrayList里面存放的是HashMap,而HashMap的键值对都是String类型

ArrayList>list=newArrayList>();

HashMapmap1=newHashMap();

HashMapmap2=newHashMap();

HashMapmap3=newHashMap();

//分别往3个HashMap中存储值

map1.put("user_name","zhangsan");

map1.put("user_ip","192.168.0.1");

map2.put("user_name","lisi");

map2.put("user_ip","192.168.0.2");

map3.put("user_name","wangwu");

map3.put("user_ip","192.168.0.3");

//将3个HashMap添加到ArrayList中

list.add(map1);

list.add(map2);

list.add(map3);

//创建适配器

//第一个参数Content:

上下文

//第二个参数List

extendsMap

>>:

ArrayList对象,ArrayList里面存放的是HashMap,而HashMap的键值对都是String类型

//第三个参数intresource:

内容显示的布局文件

//第四个参数String[]from:

被添加到ArrayList中的HashMap中key的名称,要显示的列

//第五个参数int[]to:

内容显示的布局文件中,显示内容的控件id

SimpleAdapterlistAdapter=newSimpleAdapter(this,list,

R.layout.user,newString[]{"user_name","user_ip"},

newint[]{R.id.user_name,R.id.user_ip});

//绑定到适配器。

setListAdapter(listAdapter);

}

/**

*列表当中一行的点击事件

*ListView:

ListView对象本身

*View:

被选中的那一行的View对象

*position:

被选中的那一行的位置

*id:

被选中的那一行的id

*/

@Override

protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){

//TODOAuto-generatedmethodstub

super.onListItemClick(l,v,position,id);

//打印出被选中的那一行的位置和id,计数都是从0开始

System.out.println("-------------"+position);

System.out.println("-------------"+id);

}

}

三、android布局

android有多种布局格式,这里只是详细介绍常用的五种格式。

RelativeLayout、LinearLayout、FrameLayout、AbsoluteLayout、TableLayout.。

其中LinearLayout和RelativeLayout是最常用的格式,他们可以通过xml配置文件进行布局。

可以查看相关api:

 

我这里这是简单介绍这五种格式.

1、FrameLayout

最简单的布局格式,他可以防止任何空件,但是都只能罗列到左上角,不能进行复杂的布局。

 

可以明显的看到两个视图重叠到了一起。

这种布局很少用到。

2、LinearLayout

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。

所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高.

可以进行复杂的布局的编排。

他是线性的布局。

它可以排出相当复杂的界面,同时可以嵌套使用,所以大多数选择他来进行布局。

3、AbsoluteLayout

AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。

AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。

他是绝对坐标,所以在实际中不提倡使用。

4、RelativeLayout

RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定)。

因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。

元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。

这个是相对于AbsoluteLayout的,采用的相对坐标,所以在实际中比较常用。

5、TableLayout

TableLayout将子元素的位置分配到行或列中。

一个TableLayout由许多的TableRow组成,每个TableRow都会定义一个row。

TableLayout容器不会显示row、cloumns或cell的边框线。

每个row拥有0个或多个的cell;和html中的table查不多少。

在实际中也经常使用。

 Android布局详解

之前对于XML的布局方法一直看着不爽,感觉很乱的样子,但时间长了我渐渐发现,这种程序代码与界面布局完全分开的方法非常顺手,该布局的地方都到main.xml里去写,甚至界面中显示的字符串都可以集中到string.xml文件中,而主程序的".java"文件中则完全用于编写代码,思路非常清晰。

首先按照程序的目录结构大致分析:

res/layout/这个目录存放的就是布局用的xml文件,一般默认为main.xml

res/values/这个目录存放的是一堆常量的xml文件

res/drawable/存放的是一些图片什么的,当然图标也在这里

下面主要对layout下的xml文件做个介绍,顺便也把布局的方法总结一下:

文件的开头:

xmlversion="1.0"encoding="utf-8"?

>

这是在说明xml版本及字符编码

紧接着到了关键的部分:

android="

android:

layout_width="wrap_content"

android:

layout_height="wrap_content">

其中开头的"LinearLayout"是布局的方式,可以有很多种,最常用的应该就是Linear了,其他的布局方法等下在后面总结。

接着android:

layout_width(height)="wrap_content"是在设置这部分布局的宽高,也可以是绝对值,当然设置为绝对值时要标上单位。

和就之间可以添加控件了,比如要添加一个名字为btn的Button控件,并且Button上显示的文字是"Test!

",可以这样写:

android:

text="Test!

"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

/>

开头id后面的就是控件名称,在用于添加事件Listener时会用到,而下几行的android:

xxx就是设置控件的属性了,这些属性在Android的文档中都有,不需要特别去记,一般现查就可以了。

有一点要说明的是,布局方法可以嵌套,有点像java中的Container,可以非常方便的把界面"堆"出来。

布局方式的简单说明:

查了Android文档发现布局确实很多,只列出两个我自己认为较常用的:

LinearLayout线性的布局方式

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2