`
Everyday都不同
  • 浏览: 713639 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

android UI小结(四)

阅读更多
一、Toast 提示信息框
用法较为简单:
Toast.makeText(Context,String tip,Toast.LENGTH_SHORT/LONG).show();


二、CalendarView 日历视图
可用于显示和选择日期。若希望监控该组件的日期改变,可调用CalendarView的setOnDateChangeListener()方法为该组件的点击事件添加事件监听器。
<!-- 设置以星期二作为每周第一天
	设置该组件总共显示3个星期
	并对该组件的日期时间进行了定制 -->
	<CalendarView
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:firstDayOfWeek="3"
		android:shownWeekCount="4"
		android:selectedWeekBackgroundColor="#aff"
		android:focusedMonthDateColor="#f00"
		android:weekSeparatorLineColor="#ff0"
		android:unfocusedMonthDateColor="#f9f"
		android:id="@+id/calendarView" />

日期改变的事件监听器:
CalendarView cv = (CalendarView)findViewById(R.id.calendarView);
// 为CalendarView组件的日期改变事件添加事件监听器
		cv.setOnDateChangeListener(new OnDateChangeListener()
		{
			@Override
			public void onSelectedDayChange(CalendarView view, int year,
					int month, int dayOfMonth)
			{
				// 使用Toast显示用户选择的日期
				Toast.makeText(CalendarViewTest.this,
					"你选择的日期是" + year + "年" + month + "月" 
					+ dayOfMonth + "日" ,
						Toast.LENGTH_SHORT).show();
			}
		});


三、日期和时间选择器
DatePicker供用户选择日期,TimerPicker则供用户选择时间。
同理,如果需要监听用户选择的日期,可为DatePicker添加OnDateChangedListener,为TimerPicker添加OnTimerChangedListener来实现。
定义DatePicker和TimerPicker:
<!-- 定义一个DatePicker组件 -->
<DatePicker android:id="@+id/datePicker"
	android:layout_width="wrap_content" 
	android:layout_height="200dp"
	android:layout_gravity="center_horizontal"
	android:startYear="2000"
	android:endYear="2012"
	android:calendarViewShown="true"
	android:spinnersShown="true"
	/>
<!-- 定义一个TimePicker组件 -->
<TimePicker android:id="@+id/timePicker"
	android:layout_width="wrap_content" 
	android:layout_height="100dp"
	android:layout_gravity="center_horizontal"
	/>

初始化DatePicker TimePicker组件并同时指定监听器。
// 初始化DatePicker组件,初始化时指定监听器
		datePicker.init(year, month, day, new OnDateChangedListener()
		{

			@Override
			public void onDateChanged(DatePicker arg0, int year
					, int month, int day)
			{
				ChooseDate.this.year = year;
				ChooseDate.this.month = month;
				ChooseDate.this.day = day;
				// 显示当前日期、时间
				showDate(year, month, day, hour, minute);
			}
		});
		// 为TimePicker指定监听器
		timePicker.setOnTimeChangedListener(new OnTimeChangedListener()
		{

			@Override
			public void onTimeChanged(TimePicker view
					, int hourOfDay, int minute)
			{
				ChooseDate.this.hour = hourOfDay;
				ChooseDate.this.minute = minute;
				// 显示当前日期、时间
				showDate(year, month, day, hour, minute);
				
			}
		});


四、数值选择器 NumberPicker
<NumberPicker
			android:id="@+id/np"
			android:layout_width="match_parent"
			android:layout_height="80dp"
			android:focusable="true"
			android:focusableInTouchMode="true" />

常见方法:
NumberPicker np = (NumberPicker) findViewById(R.id.np);
// 设置np1的最小值和最大值
		np.setMinValue(10);
		np.setMaxValue(50);
		// 设置np1的当前值
		np.setValue(minPrice);
		np.setOnValueChangedListener(new OnValueChangeListener()
		{
			// 当NumberPicker的值发生改变时,将会激发该方法
			@Override
			public void onValueChange(NumberPicker picker, int oldVal,
					int newVal)
			{
				minPrice = newVal;
				showSelectedPrice();
			}
		});


五、SearchView 搜索框
让用户在文本框内输入文字,并允许通过监听器监听用户输入。当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索。
如果为SearchView增加一个配套的ListView,则可以为SearchView增加自动填充的功能。
<SearchView
		android:id="@+id/sv"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" />
	<!-- 为SearchView定义自动完成的ListView-->
	<ListView
		android:id="@+id/lv"
		android:layout_width="match_parent"
		android:layout_height="0dp"
		android:layout_weight="1"/>

搜索框的常用方法举例如下(所在类必须implements SearchView.OnQueryTextListener):
ListView lv = (ListView) findViewById(R.id.lv);
		lv.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, mStrings));
		lv.setTextFilterEnabled(true);
		SearchView sv = (SearchView) findViewById(R.id.sv);
		// 设置该SearchView默认是否自动缩小为图标
		sv.setIconifiedByDefault(false);
		// 为该SearchView组件设置事件监听器
		sv.setOnQueryTextListener(this);
		// 设置该SearchView显示搜索按钮
		sv.setSubmitButtonEnabled(true);
		// 设置该SearchView内默认显示的提示文本
		sv.setQueryHint("查找");

当用户输入字符时的监听:
// 用户输入字符时激发该方法
	@Override
	public boolean onQueryTextChange(String newText)
	{
		if (TextUtils.isEmpty(newText))
		{
			// 清除ListView的过滤
			lv.clearTextFilter();
		}
		else
		{
			// 使用用户输入的内容对ListView的列表项进行过滤
			lv.setFilterText(newText);
		}
		return true;
	}

当用户单击搜索按钮时触发的方法:
// 单击搜索按钮时激发该方法
	@Override
	public boolean onQueryTextSubmit(String query)
	{
		// 实际应用中应该在该方法内执行实际查询
		// 此处仅使用Toast显示用户输入的查询内容
		Toast.makeText(this, "您的选择是:" + query
				, Toast.LENGTH_SHORT).show();
		return false;
	}


六、TabHost 选项卡
方便地在窗口上放置多个标签页(如微信界面包含微信、通讯录发现等),它是一个简单的容器,提供了如下方法来创建和添加选项卡:
newTabSpec(Stringb tag):创建选项卡
addTab(TabHost.TabSpec tabSpec):添加选项卡
与TabHost结合使用的组件:
TabWidget:代表选项卡的标签页
TabSpec:代表选项卡的一个Tab页面。
布局文件示例:
<TabHost
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@android:id/tabhost"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:layout_weight="1">
	<LinearLayout
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:orientation="vertical">
		<TabWidget
			android:id="@android:id/tabs"
			android:layout_width="match_parent"
			android:layout_height="wrap_content"/>
		<FrameLayout
			android:id="@android:id/tabcontent"
			android:layout_width="match_parent"
			android:layout_height="match_parent">
			<!-- 定义第一个标签页的内容 -->
			<LinearLayout
				android:id="@+id/tab01"
				android:orientation="vertical"
				android:layout_width="fill_parent"
				android:layout_height="fill_parent">
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
			</LinearLayout>
			<!-- 定义第二个标签页的内容 -->
			<LinearLayout
				android:id="@+id/tab02"
				android:orientation="vertical"
				android:layout_width="fill_parent"
				android:layout_height="fill_parent">
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
			</LinearLayout>
			<!-- 定义第三个标签页的内容 -->
			<LinearLayout
				android:id="@+id/tab03"
				android:orientation="vertical"
				android:layout_width="fill_parent"
				android:layout_height="fill_parent"
				android:textSize="11pt">
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
				<TextView
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
	android:text="XXX"
					android:textSize="11pt" />
			</LinearLayout>
		</FrameLayout>
	</LinearLayout>
</TabHost>

创建过程:
// 获取该Activity里面的TabHost组件
		TabHost tabHost = getTabHost();
		// 创建第一个Tab页
		TabSpec tab1 = tabHost.newTabSpec("tab1")
			.setIndicator("微信") // 设置标题
			.setContent(R.id.tab01); //设置内容
		// 添加第一个标签页
		tabHost.addTab(tab1);
		TabSpec tab2 = tabHost.newTabSpec("tab2")
			// 在标签标题上放置图标
			.setIndicator("通讯录", getResources()
			.getDrawable(R.drawable.ic_launcher))
			.setContent(R.id.tab02);
		// 添加第二个标签页
		tabHost.addTab(tab2);
		TabSpec tab3 = tabHost.newTabSpec("tab3")
			.setIndicator("发现")
			.setContent(R.id.tab03);
		// 添加第三个标签页
		tabHost.addTab(tab3);

分享到:
评论

相关推荐

    Android开发与应用——张荣 原书配套例程代码

    第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 ...

    《Android应用开发揭秘》附带光盘代码.

     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 系统和软件...

    《Android高级编程》

    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基本...

    《Android应用开发揭秘》源码

     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 系统和软件...

    Android应用开发揭秘pdf高清版

    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开发...

    Android开发案例驱动教程 配套代码

    本章小结 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 事件处理...

    android开发入门与实战(下)

    1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、...

    Android应用UI开发中Fragment的常见用法小结

    主要介绍了Android应用UI开发中Fragment的常见用法小结,Fragment的存在是为了解决不同屏幕分辩率的动态和灵活UI设计,需要的朋友可以参考下

    《Google Android开发入门与实战》.pdf

    第15章 android综合案例四——在线音乐播放器 283 15.1 关于yobo和yobo api 283 15.1.1 yobo简介 284 15.1.2 yobo功能特点 284 15.1.3 yobo api介绍 284 15.2 在线播放器架构设计 285 15.2.1 ...

    Android开发与应用——张荣,原书配套课件

    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...

    疯狂Android讲义源码

     1.7 本章小结 33  第2章 Android应用的界面编程 35  2.1 界面编程与视图(View)组件 36  2.1.1 视图组件与容器组件 36  2.1.2 使用XML布局文件控制UI  界面 40  2.1.3 在代码中控制UI界面 41  2.1.4 使用...

    android开发入门与实战(上)

    1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、...

    精通ANDROID 3(中文版)1/2

    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 ...

    Android编程入门很简单.(清华出版.王勇).part1

    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...

    android开发入门教程

    9.4 本章小结 第10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 ...

Global site tag (gtag.js) - Google Analytics