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

android UI小结(五)

阅读更多
一、ScrollView 滚动视图
由FrameLayout派生而出,用于为普通组件添加滚动条的组件。它最多只能包含一个组件,ScrollView的作用就是为该组件添加垂直滚动条。(如果需要添加水平滚动条,则可借助HorizontalScrollView来实现,用法基本相似。)
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
<!-- 定义HorizontalScrollView,为里面的组件添加水平滚动条 -->	
<HorizontalScrollView
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content">
<LinearLayout android:orientation="vertical"
	android:layout_width="match_parent"
	android:layout_height="fill_parent">
.......
</LinearLayout>
</HorizontalScrollView>
</ScrollView>


二、Notification 手机状态栏的通知
程序一般通过NotificationManager服务来发送Notification(如未读微信在状态栏的提示):
用法示例:
// 获取系统的NotificationManager服务
NotificationManager nm  = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// 创建一个启动其他Activity的Intent(必须定义OtherActivity)
		Intent intent = new Intent(NotificationTest.this
			, OtherActivity.class);
		PendingIntent pi = PendingIntent.getActivity(
			NotificationTest.this, 0, intent, 0);
		Notification notify = new Notification.Builder(this)
			// 设置打开该通知,该通知自动消失
			.setAutoCancel(true)
			// 设置显示在状态栏的通知提示信息
			.setTicker("有新消息")
			// 设置通知的图标
			.setSmallIcon(R.drawable.notify)
			// 设置通知内容的标题
			.setContentTitle("您有新的消息")
			// 设置通知内容
			.setContentText("XXX给您发送了3条消息")
			// // 设置使用系统默认的声音、默认LED灯
			// .setDefaults(Notification.DEFAULT_SOUND
			// |Notification.DEFAULT_LIGHTS)
			// 设置通知的自定义声音
			.setSound(Uri.parse("android.resource:R.raw.msg))
			.setWhen(System.currentTimeMillis())
			// 设改通知将要启动程序的Intent
			.setContentIntent(pi).build();
		// 发送通知
		nm.notify(NOTIFICATION_ID, notify);


三、对话框
1.AlertDialog
由AlertDialog生成的对话框分为图标区、标题区、内容区和按钮区4个区域。
构建一个对话框需要经过以下步骤:
eg1.简单对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this)
                //设置对话框显示的view 
                .setView(xxxDialog)
			// 设置对话框标题
			.setTitle("简单对话框")
			// 设置图标
			.setIcon(R.drawable.tools)
                           //设置该对话框显示的View
                           .setView(View src)
			.setMessage("对话框的测试内容\n第二行内容");
		// 为AlertDialog.Builder添加【确定】按钮
		.setPositiveButton("保存",new onClickListener(){...});
		// 为AlertDialog.Builder添加【取消】按钮
		.setNegativeButton("取消",null)
			.create()
			.show();

其中,setPositiveButton和setNegativeButton方法的代码如下:
private AlertDialog.Builder setPositiveButton(
			AlertDialog.Builder builder)
	{
		// 调用setPositiveButton方法添加确定按钮
		return builder.setPositiveButton("确定", new OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				show.setText("单击了【确定】按钮!");
			}
		});
	}
private AlertDialog.Builder setNegativeButton(
			AlertDialog.Builder builder)
	{
		// 调用setNegativeButton方法添加取消按钮
		return builder.setNegativeButton("取消", new OnClickListener()
		{
			@Override
			public void onClick(DialogInterface dialog, int which)
			{
				show.setText("单击了【取消】按钮!");
			}
		});
	}

eg2.简单列表项对话框
String[] items = new String[] {"xxx","xxx","xxx","xxx",...  };
AlertDialog.Builder builder = new AlertDialog.Builder(this)
			// 设置对话框标题
			.setTitle("简单列表项对话框")
			// 设置图标
			.setIcon(R.drawable.tools)
			// 设置简单的列表项内容
			.setItems(items, new OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog, int which)
				{
					show.setText("你选中了《" + items[which] + "》");
				}
			});
		// 为AlertDialog.Builder添加【确定】按钮
		setPositiveButton(builder);
		// 为AlertDialog.Builder添加【取消】按钮
		setNegativeButton(builder)
			.create()
			.show();

eg3.单选列表项对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this)
			// 设置对话框标题
			.setTitle("单选列表项对话框")
			// 设置图标
			.setIcon(R.drawable.tools)
			// 设置单选列表项,默认选中第二项(索引为1)
			.setSingleChoiceItems(items, 1, new OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog, int which)
				{
					show.setText("你选中了《" + items[which] + "》");
				}
			});
		// 为AlertDialog.Builder添加【确定】按钮
		setPositiveButton(builder);
		// 为AlertDialog.Builder添加【取消】按钮
		setNegativeButton(builder)
			.create()
			.show();

eg4.多选列表项的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this)
			// 设置对话框标题
			.setTitle("多选列表项对话框")
			// 设置图标
			.setIcon(R.drawable.tools)
			// 设置多选列表项,设置勾选第2项、第4项
			.setMultiChoiceItems(items
			, new boolean[]{false , true ,false ,true}, null);
		// 为AlertDialog.Builder添加【确定】按钮
		setPositiveButton(builder);
		// 为AlertDialog.Builder添加【取消】按钮
		setNegativeButton(builder)
			.create()
			.show();

eg5.自定义列表项的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this)
			// 设置对话框标题
			.setTitle("自定义列表项对话框")
			// 设置图标
			.setIcon(R.drawable.tools)
			// 设置自定义列表项
			.setAdapter(new ArrayAdapter<String>(this 
					, R.layout.array_item 
					, items), null);
		// 为AlertDialog.Builder添加【确定】按钮
		setPositiveButton(builder);
		// 为AlertDialog.Builder添加【取消】按钮
		setNegativeButton(builder)
			.create()
			.show();

eg6.自定义view的对话框
step1.先定义一个页面布局
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/loginForm"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<TableRow>
<TextView
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="用户名:"
	android:textSize="10pt"
	/>
<!-- 输入用户名的文本框 -->
<EditText
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:hint="请填写登录帐号"
	android:selectAllOnFocus="true"
	/>
</TableRow>
<TableRow>
<TextView
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="密码:"
	android:textSize="10pt"	
	/>
<!-- 输入密码的文本框 -->	
<EditText
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:hint="请填写密码"	
	android:password="true"
	/>
</TableRow>
<TableRow>
<TextView
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="电话号码:"
	android:textSize="10pt"	
	/>
<!-- 输入电话号码的文本框 -->		
<EditText
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:hint="请填写您的电话号码"
	android:selectAllOnFocus="true"
	android:phoneNumber="true"
	/>
</TableRow>
</TableLayout>

step2.创建对话框
//装载/res/layout/login.xml界面布局
		TableLayout loginForm = (TableLayout)getLayoutInflater()
			.inflate( R.layout.login, null);		
		new AlertDialog.Builder(this)
			// 设置对话框的图标
			.setIcon(R.drawable.tools)
			// 设置对话框的标题
			.setTitle("自定义View对话框")
			// 设置对话框显示的View对象
			.setView(loginForm)
			// 为对话框设置一个“确定”按钮
			.setPositiveButton("登录" , new OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog,
						int which)
				{
					// 此处可执行登录处理
				}
			})
			// 为对话框设置一个“取消”按钮
			.setNegativeButton("取消", new OnClickListener()
			{
				@Override
				public void onClick(DialogInterface dialog,
						int which)
				{
					// 取消登录,不做任何事情。
				}
			})
			// 创建、并显示对话框
			.create()
			.show();


四、DatePickerDialog、TimePickerDialog
用法不难,例如:
Calendar c = Calendar.getInstance();
// 直接创建一个DatePickerDialog对话框实例,并将它显示出来
				new DatePickerDialog(DateDialogTest.this,
					// 绑定监听器
					new DatePickerDialog.OnDateSetListener()
					{
						@Override
						public void onDateSet(DatePicker dp, int year,
							int month, int dayOfMonth)
						{
							EditText show = (EditText) findViewById(R.id.show);
							show.setText("您选择了:" + year + "年" + (month + 1)
								+ "月" + dayOfMonth + "日");
						}
					}
				//设置初始日期
				, c.get(Calendar.YEAR)
				, c.get(Calendar.MONTH)
				, c.get(Calendar.DAY_OF_MONTH)).show();
			}

如果是TimePicker,相应监听器为:
new TimePickerDialog(DateDialogTest.this,
					// 绑定监听器
					new TimePickerDialog.OnTimeSetListener()
					{
						@Override
						public void onTimeSet(TimePicker tp, int hourOfDay,
							int minute)
						{
//more code here....
				//设置初始时间
				, c.get(Calendar.HOUR_OF_DAY)
				, c.get(Calendar.MINUTE)
				//true表示采用24小时制
				, true).show();
			}


五、ProgressDialog 进度对话框
用法如下:
//第一种方法:调用静态方法显示环形进度条
		ProgressDialog.show(this, "任务执行中"
			, "任务执行中,请等待", false, true);
//第二种方法
ProgressDialog pd = new ProgressDialog(ProgressDialogTest.this);
// 设置对话框的标题
		pd.setTitle("任务正在执行中");
		// 设置对话框显示的内容
		pd.setMessage("任务正在执行中,敬请等待...");
		// 设置对话框能用“取消”按钮关闭
		pd.setCancelable(true);
		// 设置对话框的进度条风格
		pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
	// 设置对话框的进度条是否显示进度:false->显示;true->不显示
		pd.setIndeterminate(true);
		pd.show(); //②
分享到:
评论

相关推荐

    android auto ui 测试

    #### 四、小结 通过上述步骤,你可以有效地设置和运行Android UI自动化测试。这不仅可以提高测试效率,还能确保应用在各种设备上都能提供一致的用户体验。记住,在执行测试之前,请确保所有环境配置正确,并且已...

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

    总之,Fragment是Android UI开发中的重要组成部分,它使得在不同屏幕尺寸和分辨率的设备上构建动态、灵活的用户界面成为可能。通过理解并熟练掌握Fragment的创建、通信、生命周期管理和回退栈管理等关键知识点,...

    Android问题小结

    本资料包"Android问题小结"是针对Android开发者的一个宝贵资源集合,涵盖了多个方面的知识,包括事件分发机制、设计模式、图层管理、属性动画、框架使用、应用安全以及个人职业发展规划等。 首先,"技术交流--...

    Android知识小结

    以下是对Android知识的一些小结,旨在分享遇到的问题及其解决方案,帮助开发者提升技能和解决问题。 1. **UI设计与布局**:Android使用XML来定义用户界面布局。`efefe.PNG`、`weff.PNG`可能展示了不同类型的布局,...

    Android UI_常用组件之 Spinner与适配器模式

    #### 小结 本文详细介绍了Android UI中`Spinner`组件的基本使用以及如何结合适配器模式进行数据绑定。`Spinner`是Android开发中非常实用的一个组件,掌握其使用方法可以帮助开发者更好地设计用户界面,提供更友好的...

    Android_UI开发专题(一)_之界面设计

    #### 四、小结 本文档详细介绍了Android UI开发中的关键知识点,特别是与界面设计密切相关的`android.content.res.Resources`和`android.graphics.Bitmap`两个类。通过学习这些基础知识,开发者可以更好地理解和...

    Android内存管理小结

    - 较小的体积和更低的资源消耗使得它非常适合移动设备。 - 支持同时运行多个虚拟机实例,这使得每个Android应用都能拥有独立的虚拟机环境。 #### 二、Dalvik虚拟机架构特点 - **基于寄存器架构**:与传统的JVM...

    Android高级工程师面试技术点小结

    ### Android高级工程师面试技术点小结 在当前竞争激烈的IT行业中,成为一名优秀的Android高级工程师不仅意味着需要具备深厚的技术功底,还需要不断跟进最新的技术趋势和发展方向。本文将根据标题、描述以及部分内容...

    android 小结

    在Android开发领域,小结通常意味着对某个特定主题或技术的综合概述。在这个"android小结"中,我们可以探讨一些核心的Android知识点,包括但不限于源码解析、工具使用以及一个可能的示例项目"MainActivityDemo"。让...

    Android入门小项目(增删查改操作)

    在Android开发领域,一个入门级别的小项目通常会涵盖基本的操作,如增删查改(CRUD,Create、Read、Update、Delete),这是任何数据管理应用的基础。本项目以"Android入门小项目(增删查改操作)"为主题,旨在帮助初学...

    android小结.docx

    设备独立像素(dip)是一种与设备分辨率无关的单位,用于确保UI元素在不同密度屏幕上保持一致的大小。将像素值(px)转换为dip的公式是:`px = (int) (dip * density + 0.5f)`,其中`density`是屏幕密度。注意,...

    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异步加载图像小结 (含线程池,缓存方法).rar

    在Android应用开发中,图像加载是一个常见的...以上就是关于“Android异步加载图像小结(含线程池,缓存方法)”的主要知识点。在实际应用中,开发者应结合项目需求,合理选择和优化这些技术,以提供流畅的用户体验。

    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应用开发揭秘》源码

     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 Drawable必备知识小结

    总之,理解并熟练掌握Android Drawable的使用对于提升UI设计和开发的灵活性至关重要。通过组合各种Drawable类型和属性,开发者可以创建出丰富多样的视觉效果,满足不同应用场景的需求。无论是简单的颜色填充还是复杂...

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

Global site tag (gtag.js) - Google Analytics