- 浏览: 714558 次
- 性别:
- 来自: 宇宙
文章分类
最新评论
-
天使建站:
http://www.aijquery.cn/Html/bia ...
选择控件:select ,radio,checkbox之用jquery获取选中值的小结 -
wahahachuang8:
GoEasy实时Web推送,支持后台推送和前台推送两种:后台推 ...
【反ajax】webSocket实现实时推送功能 -
white_crucifix:
Str5=Str1+Str2+Str3+Str4,这条语句执行 ...
面试系列(二):JVM工作原理 -
yanxing2012:
写的不对,http://blog.csdn.net/lian_ ...
List集合的复制方式小结 -
u012879379:
嗯,一针见血的指出了问题,谢谢博主
JedisDataException: ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in thi
一、自动完成文本框 AutoCompleteTextView
当用户选择某个菜单项之后,AutoCompleteTextView会按用户选择自动填写该文本框。使用时必须为他设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。
eg.布局文件:
为AutoCompleteTextView设置Adapter的代码:
二、GridView
GridView和ListView组件有相同的父类AbsListView; 区别在于ListView只显示一列而GridView可显示多列。GridView也需要Adapter来提供显示的数据。
eg.布局文件:
为GridView提供Adapter
三、ExpandableListView 可展开的列表项组件
是ListView的子类,在普通ListView上进行了扩展,把列表项分为几组,每组又可以包含多个子列表项。
四、Spinner Gallery(画廊视图)
Spinner就是一个垂直的列表选择框。为Spinner指定android:entries属性或者为Spinner设置ArrayAdapter即可实现Spinner
Gallery显示一个水平的列表选择框。不过他没有android:entries属性,所以只能为他设置一个Adapter
五、ProgressBar进度条组件
进度条组件通常用于向用户显示某个耗时操作完成的百分比。可通过style属性来指定进度条的样式,如:
下面通过填充数组来模拟一个耗时操作,以进度条来标识任务完成的百分比。
而对于显示在标题上的进度条,可以通过设置窗口特征控制显示进度条。
六、ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper
1.ViewSwitcher代表了视图切换组件,它本身继承了FrameLayout.可将多个View层叠在一起每次只显示一个组件。
ViewSwitcher常用的方法:
2.ImageSwitcher图像切换器
ImageView常用方法:
3.TextSwitcher 文本切换器
4.ViewFlipper组件
ViewFlipper组件继承了ViewAnimator,可调用addView(View)添加多个组件。一旦向ViewFlipper中添加多个组件之后,ViewFlipper可以使用动画控制多个组件之间的切换效果:
常用方法如下:
当用户选择某个菜单项之后,AutoCompleteTextView会按用户选择自动填写该文本框。使用时必须为他设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。
eg.布局文件:
<AutoCompleteTextView android:id="@+id/auto" android:layout_width="fill_parent" android:layout_height="wrap_content" android:completionHint="选择您喜欢的商品:" android:dropDownHorizontalOffset="10dp" android:completionThreshold="1"/>
为AutoCompleteTextView设置Adapter的代码:
String[] books = new String[]{ "商品XXX", "商品XXXXX", "商品XXXXXX", "商品XXXXXXXX" }; // 创建一个ArrayAdapter,封装数组 ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, books); actv = (AutoCompleteTextView)findViewById(R.id.auto); // 设置Adapter actv.setAdapter(aa);
二、GridView
GridView和ListView组件有相同的父类AbsListView; 区别在于ListView只显示一列而GridView可显示多列。GridView也需要Adapter来提供显示的数据。
eg.布局文件:
<GridView android:id="@+id/grid01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:horizontalSpacing="1pt" android:verticalSpacing="1pt" android:numColumns="4" android:gravity="center" />
为GridView提供Adapter
// 创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems // 使用/layout/cell.xml文件作为界面布局 , R.layout.cell, new String[] { "image" }, new int[] { R.id.image1 }); grid = (GridView) findViewById(R.id.grid01); // 为GridView设置Adapter grid.setAdapter(simpleAdapter);
三、ExpandableListView 可展开的列表项组件
是ListView的子类,在普通ListView上进行了扩展,把列表项分为几组,每组又可以包含多个子列表项。
//创建一个BaseExpandableListAdapter对象 ExpandableListAdapter adapter = new BaseExpandableListAdapter() { int[] logos = new int[] { R.drawable.yf, R.drawable.sm, R.drawable.sp }; private String[] goodsTypes = new String[] { "衣服", "数码", "食品"}; private String[][] goods = new String[][] { { "xxx", "xxx", "xxx", "xxx" }, { "yyy", "yyy", "yyy", "yyy" }, { "zzz", "zzz" , "zzz" } }; // 获取指定组位置、指定子列表项处的子列表项数据 @Override public Object getChild(int groupPosition, int childPosition) { return goods[groupPosition][childPosition]; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } //返回特定组所包含的子列表项的数量 @Override public int getChildrenCount(int groupPosition) { return goods[groupPosition].length; } private TextView getTextView() { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 64); TextView textView = new TextView(ExpandableListViewTest.this); textView.setLayoutParams(lp); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(36, 0, 0, 0); textView.setTextSize(20); return textView; } // 该方法决定每个子选项的外观 @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setText(getChild(groupPosition, childPosition) .toString()); return textView; } // 获取指定组位置处的组数据 @Override public Object getGroup(int groupPosition) { return goodsTypes[groupPosition]; } //包含组列表的数量 @Override public int getGroupCount() { return goodsTypes.length; } @Override public long getGroupId(int groupPosition) { return groupPosition; } // 该方法决定每个组选项的外观 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { LinearLayout ll = new LinearLayout(ExpandableListViewTest.this); ll.setOrientation(0); ImageView logo = new ImageView(ExpandableListViewTest.this); logo.setImageResource(logos[groupPosition]); ll.addView(logo); TextView textView = getTextView(); textView.setText(getGroup(groupPosition).toString()); ll.addView(textView); return ll; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public boolean hasStableIds() { return true; } }; ExpandableListView expandListView = (ExpandableListView) findViewById(R.id.list); expandListView.setAdapter(adapter); }
四、Spinner Gallery(画廊视图)
Spinner就是一个垂直的列表选择框。为Spinner指定android:entries属性或者为Spinner设置ArrayAdapter即可实现Spinner
Gallery显示一个水平的列表选择框。不过他没有android:entries属性,所以只能为他设置一个Adapter
五、ProgressBar进度条组件
进度条组件通常用于向用户显示某个耗时操作完成的百分比。可通过style属性来指定进度条的样式,如:
<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Small" />
下面通过填充数组来模拟一个耗时操作,以进度条来标识任务完成的百分比。
// 该程序模拟填充长度为200的数组 private int[] data = new int[200]; int hasData = 0; // 记录ProgressBar的完成进度 int status = 0; ProgressBar bar , bar2; // 创建一个负责更新的进度的Handler Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 表明消息是由该程序发送的 if (msg.what == 0x111) { bar.setProgress(status); bar2.setProgress(status); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bar = (ProgressBar) findViewById(R.id.bar); bar2 = (ProgressBar) findViewById(R.id.bar2); // 启动线程来执行任务 new Thread() { public void run() { while (status < 200) { // 获取耗时操作的完成百分比 status = doWork(); // 发送消息 mHandler.sendEmptyMessage(0x111); } } }.start(); } // 模拟一个耗时的操作 public int doWork() { // 为数组元素赋值 data[hasData++] = (int) (Math.random() * 100); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return hasData; }
而对于显示在标题上的进度条,可以通过设置窗口特征控制显示进度条。
//设置窗口特征:启用显示进度的进度条 requestWindowFeature(Window.FEATURE_PROGRESS); //设置窗口特征:启用不显示进度的进度条 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
六、ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper
1.ViewSwitcher代表了视图切换组件,它本身继承了FrameLayout.可将多个View层叠在一起每次只显示一个组件。
<!-- 定义一个ViewSwitcher组件 --> <ViewSwitcher android:id="@+id/viewSwitcher" android:layout_width="fill_parent" android:layout_height="fill_parent" />
// 创建LayoutInflater对象 LayoutInflater inflater = LayoutInflater.from(ViewSwitcherTest.this); ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.viewSwitcher); switcher.setFactory(new ViewFactory() { // 实际上就是返回一个GridView组件 @Override public View makeView() { // 加载R.layout.slidelistview组件,实际上就是一个GridView组件。 return inflater.inflate(R.layout.slidelistview, null); } });
ViewSwitcher常用的方法:
// 为ViewSwitcher的组件显示过程设置动画 switcher.setInAnimation(this, R.anim.slide_in_right); // 为ViewSwitcher的组件隐藏过程设置动画 switcher.setOutAnimation(this, R.anim.slide_out_left); // 控制下一屏将要显示的GridView对应的 Adapter ((GridView) switcher.getNextView()).setAdapter(adapter); // 显示下一屏, switcher.showNext();
2.ImageSwitcher图像切换器
<!-- 定义一个ImageSwitcher组件 --> <ImageSwitcher android:id="@+id/switcher" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center_horizontal" android:inAnimation="@android:anim/fade_in" android:outAnimation="@android:anim/fade_out" />
ImageView常用方法:
ImageSwitcher switcher = (ImageSwitcher) findViewById(R.id.switcher); // 为ImageSwitcher设置图片切换的动画效果 switcher.setFactory(new ViewFactory() { @Override public View makeView() { // 创建ImageView对象 ImageView imageView = new ImageView(ImageSwitcherTest.this); imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); imageView.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); // 返回ImageView对象 return imageView; } }); // 显示当前被选中的图片 switcher.setImageResource(XXX);
3.TextSwitcher 文本切换器
<!-- 定义一个TextSwitcher,并指定了文本切换时的动画效果 --> <TextSwitcher android:id="@+id/textSwitcher" android:layout_width="match_parent" android:layout_height="wrap_content" android:inAnimation="@android:anim/slide_in_left" android:outAnimation="@android:anim/slide_out_right" android:onClick="next" />
textSwitcher.setFactory(new ViewSwitcher.ViewFactory() { public View makeView() { TextView tv = new TextView(TextSwitcherTest.this); tv.setTextSize(40); tv.setTextColor(Color.MAGENTA); return tv; } }); textSwitcher.setText(String str);
4.ViewFlipper组件
ViewFlipper组件继承了ViewAnimator,可调用addView(View)添加多个组件。一旦向ViewFlipper中添加多个组件之后,ViewFlipper可以使用动画控制多个组件之间的切换效果:
<ViewFlipper android:id="@+id/details" android:layout_width="match_parent" android:layout_height="match_parent" android:persistentDrawingCache="animation" android:flipInterval="1000"> <ImageView android:src="@drawable/java" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ImageView> <ImageView android:src="@drawable/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ImageView> <ImageView android:src="@drawable/ee" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ImageView> </ViewFlipper>
常用方法如下:
viewFlipper.setInAnimation(this, R.anim.slide_in_right); viewFlipper.setOutAnimation(this, R.anim.slide_out_left); // 显示上一个组件 viewFlipper.showPrevious(); // 显示下一个组件。 viewFlipper.showNext(); // 停止自动播放 viewFlipper.stopFlipping();
发表评论
-
启动其他Activity并保存结果到指定组件上
2015-03-05 14:40 675启动其他Activity的Activity: publi ... -
弹出列表对话框,选择列表项后返回结果并消失
2015-03-05 14:24 1248最近的开发过程中,有选择时间段的需求,需要弹出一个列表对话框 ... -
使用ListView保存历史输入记录
2015-03-05 13:57 3568android应用中,经常需要保存用户的输入记录,以保证用户 ... -
启动其他Activity的Fragment并返回结果
2015-02-02 16:08 2743本人最近在开发类似订票app的过程中,遇到一个问题,订票界 ... -
android客户端与服务端交互的工具类
2015-01-29 10:38 904客户端: public class HttpUtil { ... -
android之带右侧字母(拼音)索引的列表
2015-01-29 10:29 4871在开发app的过程中,如果用到通讯录或者类似的列表,需要 ... -
android使用implements ActionBar.TabListener的方式创建导航
2015-01-29 09:59 2238上篇说到,android现在的版本已经不再推荐使用继承Ta ... -
模仿微信界面tabhost底部导航——使用继承ActivityGroup方式
2015-01-28 17:58 1792在一般常见的app中,常常会用到底部导航,而android ... -
Activity组件与Service组件通过BroadcastReceiver监听器通信
2014-12-25 11:41 17651.首先,Activity的onCreate方法中要有启动 ... -
ImageView加载图片资源并进行缩放
2014-12-05 09:40 1754android应用中常常需要加载R.drawable下的图片资 ... -
【转】APK反编译
2014-12-03 10:25 752原文作者:lpohvbe 原文地址:http://blog.c ... -
Bundle传递参数
2014-11-28 10:31 1637bundle是在android中十分有用的一种类,我们通常用 ... -
android UI小结(六)
2014-11-28 09:19 703一、选项菜单和子菜单 ... -
android UI小结(五)
2014-11-27 17:03 1045一、ScrollView 滚动视图 由FrameLayout派 ... -
android UI小结(四)
2014-11-27 16:19 1112一、Toast 提示信息框 用法较为简单: Toast.mak ... -
android UI小结(二)
2014-11-27 14:20 1135一、TextView 文本框组件,直接继承View,也是Edi ... -
android UI小结(一)
2014-11-27 10:50 910一、view组件的一些特殊属性、相关方法和说明 XML属性相关 ... -
setBackground、setBackgroundDrawable、setBackgroundResource、setBackgroundColor的区别
2014-11-26 17:41 2998Android UI开发时,常常需要对view组件的背景图片或 ...
相关推荐
第1章 Android简介 1.1 手机操作系统 1.2 Android起源 1.3 Android特征 1.4 Android体系结构 1.4.1 应用层 1.4.2 应用框架层 1.4.3 系统库层 1.4.4 内核层 1.5 小结 练习 第2章 Android开发环境 2.1 ...
15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件...
15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件...
本章小结 42 第4章 UI基础知识 43 4.1 Android UI组件概述 43 4.1.1 View 43 4.1.2 ViewGroup 44 4.1.3 布局管理器 44 4.2 UI设计工具 44 4.2.1 DroidDraw工具 44 4.2.2 ADT插件UI设计工具 46 4.3 事件处理...
15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件需求 16.2.2 NDK开发...
第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...
主要介绍了Android应用UI开发中Fragment的常见用法小结,Fragment的存在是为了解决不同屏幕分辩率的动态和灵活UI设计,需要的朋友可以参考下
第14章 android综合案例三——基于android的豆瓣网(web 2.0)移动客户端开发 260 14.1 关于豆瓣网和豆瓣网api 260 14.1.1 豆瓣网介绍 260 14.1.2 豆瓣网api介绍 261 14.1.3 豆瓣网api认证 261 14.1.4...
1.5 小结 练习 第2章 Android开发环境 2.1 Java开发环境安装 2.1.1 安装JDK 2.1.2 安装Eclipse 2.1.3 Eclipse中文包的安装 2.2 Android SDK 2.2.1 安装ADT 2.2.2 安装Android SDK 2.3 Android...
第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...
1.8 小结 第2章 设置开发环境 2.1 设置环境 2.1.1 下载JDK 6 2.1.2 下载Eclipse 3.6 2.1.3 下载Android SDK 2.1.4 命令行窗口 2.1.5 安装ADT 2.2 了解基本组件 2.2.1 View 2.2.2 ...
DoList资源示例 3.6.4 为不同的语言和硬件创建资源 3.6.5 运行时配置更改 3.7 深入探讨Android活动 3.7.1 创建一个活动 3.7.2 活动生命周期 3.7.3 Android活动类 3.8 小结 第4章 创建用户界面 4.1 Android UI基本...
第14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网和豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网API...
个人觉得采用第三方UI是个不错的选择,尤其是你需要比较复杂的UI组件,而且又比较赶项目的时候。 优缺点 当然第三方UI组件不全是优秀的,个人总结如下:(当然远远不止这些,欢迎讨论) 优点:扩展性好,比较通用...
1.5小结 第2章搭建你的开发环境 2.1配置前的准备工作 2.1.1 Android支持的操作系统 2.1.2准备“四大法宝” 2.2安装并配置JDK 2.2.1 安装JDK 2.2.2配置JDK 2.3安装并配置Eclipse 2.3.1 运行Eclipse 2.3.2 了解Eclipse...