收藏 分享(赏)

android常用控件及布局.doc

上传人:kpmy5893 文档编号:7349467 上传时间:2019-05-15 格式:DOC 页数:10 大小:534KB
下载 相关 举报
android常用控件及布局.doc_第1页
第1页 / 共10页
android常用控件及布局.doc_第2页
第2页 / 共10页
android常用控件及布局.doc_第3页
第3页 / 共10页
android常用控件及布局.doc_第4页
第4页 / 共10页
android常用控件及布局.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、一、概述 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 那样提供了面板+ 布

2、局的结构,而是每种 Layout 就是一中特殊的面板,包括AbsoluteLayout、FrameLayout、LinearLayout 、TableLayout、RelativeLayout 等。 容器 这里的容器是指采用了特定的布局并且提供了行为的控件,包含ListView、GridView、Gallery 、Spinner 等。 二、android 常用控件 android 常用控件之 TextView、EditView 、Button、Menu示例:一个计算应用程序,输入 2 个数字,点击按钮进行计算两个数的积并且返回结果。当点击模拟器右侧的 Menu 按钮,在输入界面中显示一个有关于

3、和退出的菜单。 项目运行效果图: 开发步骤: 1、 新建一个 Android 项目 2、 在布局文件中依次添加 EditText、TextView、EditText、Button (一定要按照界面上控件显示的顺序在布局文件中添加) 3、 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout 和一个 TextView(默认的布局文件中默认就有一个 LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加) 4、 编写第一个 Activity a) 让 Activity 继承 android 的 Activity b) 重写 Acti

4、vity 的 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 获得控件对象

5、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()方法,这个方法是用

6、于添加菜单中的菜单项,我们添加两个菜单项 9、 再在第一个 Activity 中重写 onOptionsItemSelected()方法,这个方法是当点击菜单中菜单项时调用。判断,当点击退出的时候调用 finish()方法 android 常用控件之 RadioGroup RadioButton CheckBox Toast 的使用RadioGroup、RadioButton 的用法 RadioGroup 是 RadioButton 的组。一个 RadioGroup 里面可以有多个 RadioButton,但是只能选中其中的一个 RadioButton。 示例:一个应用程序中有两个单选按钮,用

7、于选择男或女。 开发步骤: 1、 新建一个 Android 应用程序 2、 编写 main.xml 文件,添加一个 RadioGroup 标签(还可以设置此标签内的布局方向是水平布局还是垂直布局) 3、 在 RadioGroup 标签内添加两个 RadioButton 4、 编写 Activity,先声明 3 个全局变量,用于接收这三个控件对象 5、 在 onCreate()方法内,根据控件 id 获得这三个对象并赋给相应的变量 6、 编写监听器,监听器实现的是 RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的 public void onCh

8、eckedChanged(RadioGroup group, int checkedId) 方法,这个方法的第一个参数是用来接收 RadioGroup 对象,第二个参数是用来接收被选中的 RadioButton 的 ID。 在这个方法里面可以做一系列的判断和操作,比如判断 RadioButton 的 id 是否等于 checkedId,如果等于就可以输出一句话或者使用 Toast显示提示消息。 7、将监听器绑定到 RadioGroup 上 需要主要的是, a)、这里绑定监听器的是 RadioGroup 对象而不是 RadioButton 对象 b)、这里的监听器实现的是 RadioGroup.

9、OnCheckedChangeListener()提供的接口。 CheckBox 的用法 CheckBox 复选框,相信大家都很了解了,这里就不多说了,直接上示例。 示例:一个应用程序中有三个复选框,可以进行多选操作。 开发步骤: 1、 新建一个 Android 应用程序 2、 编写 main.xml 文件,添加三个 CheckBox 标签 3、 编写 Activity,先声明 3 个全局变量,用于接收这三个控件对象 4、 为每一个 CheckBox 都编写一个监听器,该监听器实现的是 CompoundButton.OnCheckedChangeListener()提供的接口,需要重写里面的

10、public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)方法,这个方法的第一个参数是用来接收CompoundButton 对象,第二个参数是用来接收是否被选中, 在这个方法里面可以做一系列的判断和操作,比如判断某个 CheckBox 有没有被选中 5、 将监听器绑定在对应的 CheckBox 上 Toast 的用法 Toast 主要用于提示信息,用起来很方便,一行代码就 OK 了。 1、 创建 Toast 对象 makeText(Context context, CharSequence text, i

11、nt duration); 通过调用这个方法,返回一个 Toast 对象。 第一个参数是上下文对象,通常是你的应用程序或者 Activity 对象, 第二个参数就是要显示的文本内容,可以格式化文本 第三个参数是持续多长时间来显示消息,有两个常量:LENGTH_SHORT 或者 LENGTH_LONG 2、 调用 show()方法显示。 Toast toast = Toast.makeText(RadioTest.this, “female“, Toast.LENGTH_SHORT); toast.show(); 在前面的 RadioButton 示例中,当选中“女“的单选框时调用 Toast。

12、 有一点需要注意的是: RadioGroup 的监听器实现是 RadioGroup.OnCheckedChangeListener()提供的接口,而 CheckBox 的监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口 为什么 RadioGroup 和 CheckBox 实现的不是同一个接口呢? 原因大概是因为: 在 RadioGroup.OnCheckedChangeListener()里面的 onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个 RadioGroup

13、 参数,而 RadioGroup 并不是 CompoundButton 的子类,所以它只能再重新写一个这样的接口。 而 CheckBox 它本身就是 CompoundButton 的子类,所以它可以直接使用这个接口。 android 常用控件之 ProgressBar、ListViewProgressBar(进度条)的使用 示例:一个应用程序有 2 个 ProgressBar,让进度条显示进度。 开发步骤: 1、 新建一个 android 项目 2、 在 main.xml 布局文件中先添加 1 个 ProgressBar 控件(firstProgressBar),设置这个进度条是以水平方式展示

14、的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示) 3、 在 main.xml 布局文件中再添加 1 个 ProgressBar 控件(secondProgressBar ),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示 4、 在 main.xml 布局文件中再添加一个 Button 控件 5、 在 Activity 中编写代码,先获得这 2 个 ProgressBar 和 Button 对象 6、 然后编写一个监听器,设置进度条的进度,当每点击一次 Button,进度则增加 10 7、 将监听器绑定到 But

15、ton 对象上 下图为 main.xml 布局文件的片段: 最后项目实现的效果为:ListView 的使用 ListView 的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解。 示例:一个应用程序有一个 ListView,显示三行信息。 最后项目实现的效果为: 开发步骤: 1、 新建一个 Android 应用程序 2、 在布局文件中再添加一个 LinearLayout(应用程序新建的时候默认的布局文件里就已经有了一个 LinearLayout,现在再添加一个),设置这个 LinearLayout 的一些属性。 3、 在 LinearLayout 中添加一个 L

16、istView,并设置一些属性。 4、 新建一个布局文件,这个布局文件呢,是用来布局和显示 ListView 里面的内容的(我是这样理解的,不知道大家能不能理解哈)。先在这个布局文件中添加一个LinearLayout,然后在 LinearLayout 中添加两个 TextView,表示显示两列数据(如果需要显示多列数据的话当然就是添加多个 TextView 了)。 Xml 代码 5、 编写 Activity a) 首先要注意的是,这个 Activity 他继承的不是 Activity,而是 ListActivity。 b) 创建一个 ArrayList,里面存放的是 HashMap,而 Has

17、hMap 的键值对都是 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.wi

18、dget.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) super.onCreate(savedInstanceState); setContentView(R.layou

19、t.main); / 创建一个 ArrayList, ArrayList 里面存放的是 HashMap,而 HashMap 的键值对都是 String 类型 ArrayList list = new ArrayList(); HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); HashMap map3 = new HashMap(); / 分别往 3 个 HashMap 中存储值 map1.put(“user_name“, “zhangsan“); map1.put(“user_ip“, “192.168.0.1“); map

20、2.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: ArrayList 对象, ArrayList 里面存放的是 HashMap,而 HashMap

21、 的键值对都是 String 类型 /第三个参数 int resource:内容显示的布局文件 /第四个参数 String from:被添加到 ArrayList 中的 HashMap 中 key 的名称 ,要显示的列 /第五个参数 int to:内容显示的布局文件中 ,显示内容的控件 id SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.user, new String “user_name“, “user_ip“ , new int R.id.user_name, R.id.user_ip ); /绑定到

22、适配器。 setListAdapter(listAdapter); /* * 列表当中一行的点击事件 * ListView: ListView 对象本身 * View:被选中的那一行的 View 对象 * position:被选中的那一行的位置 * id:被选中的那一行的 id */ Override protected void onListItemClick(ListView l, View v, int position, long id) / TODO Auto-generated method stub super.onListItemClick(l, v, position, id

23、); /打印出被选中的那一行的位置和 id,计数都是从 0 开始 System.out.println(“-“+position); System.out.println(“-“+id); 三、android 布局 android 有多种布局格式,这里只是详细介绍常用的五种格式。RelativeLayout、LinearLayout、FrameLayout、AbsoluteLayout、TableLayout.。其中 LinearLayout 和 RelativeLayout 是最常用的格式,他们可以通过 xml 配置文件进行布局。可以查看相关 api: http:/ 我这里这是简单介绍这五种

24、格式. 1、FrameLayout 最简单的布局格式,他可以防止任何空件,但是都只能罗列到左上角,不能进行复杂的布局。 可以明显的看到两个视图重叠到了一起。这种布局很少用到。 2、LinearLayout LinearLayout 以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有 一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高. 可以进行复杂的布局的编排。他是线性的布局。 它可以排出相当复杂的界面,同时可以嵌套使用,所以大多数选择他来进行布局。 3、AbsoluteLayout AbsoluteLayout 可

25、以让子元素指定准确的 x/y 坐标值,并显示在屏幕上。AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。他是绝对坐标,所以在实际中不提倡使用。 4、RelativeLayout RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过 ID 指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来 排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。这个是相对于 AbsoluteLayout 的,采用的相对坐标,所以在实际中比较常用。 5、TableLayout Tab

26、leLayout 将子元素的位置分配到行或列中。一个 TableLayout 由许多的 TableRow 组成,每个 TableRow 都会定义一个 row 。TableLayout 容器不会显示 row 、cloumns 或 cell 的边框线。每个 row 拥有 0 个或多个的 cell ;和 html 中的 table查不多少。在实际中也经常使用。 Android 布局详解 之前对于 XML 的布局方法一直看着不爽,感觉很乱的样子,但时间长了我渐渐发现,这种程序代码与界面布局完全分开的方法非常顺手,该布局的地方都到 main.xml 里去写,甚至界面中显示的字符串都可以集中到 strin

27、g.xml 文件中,而主程序的“.java“ 文件中则完全用于编写代码,思路非常清晰。 首先按照程序的目录结构大致分析: res/layout/ 这个目录存放的就是布局用的 xml 文件,一般默认为 main.xml res/values/ 这个目录存放的是一堆常量的 xml 文件 res/drawable/ 存放的是一些图片什么的,当然图标也在这里 下面主要对 layout 下的 xml 文件做个介绍,顺便也把布局的方法总结一下: 文件的开头: 这是在说明 xml 版本及字符编码 紧接着到了关键的部分: 其中开头的“LinearLayout“是布局的方式,可以有很多种,最常用的应该就是 Li

28、near 了,其他的布局方法等下在后面总结。 接着 android:layout_width(height)=“wrap_content“是在设置这部分布局的宽高,也可以是绝对值,当然设置为绝对值时要标上单位。 在和 就之间可以添加控件了,比如要添加一个名字为 btn 的 Button 控件,并且 Button 上显示的文字是“Test!“,可以这样写: 开头 id 后面的就是控件名称,在用于添加事件 Listener 时会用到,而下几行的android:xxx 就是设置控件的属性了,这些属性在 Android 的文档中都有,不需要特别去记,一般现查就可以了。 有一点要说明的是,布局方法可以嵌套,有点像 java 中的 Container,可以非常方便的把界面“堆“出来。 布局方式的简单说明: 查了 Android 文档发现布局确实很多,只列出两个我自己认为较常用的: LinearLayout 线性的布局方式,要么上下,要么左右的添加控件,很常用; GridView 中文翻译过来是网格布局,控件按照顺序依次填到每个格子里就好了,出来的界面会很整齐,较常用.

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报