Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 557|回复: 0

Android 深入解析用户界面(九) - Android学习

[复制链接]

该用户从未签到

发表于 2011-10-26 16:42:32 | 显示全部楼层 |阅读模式
       通知用户

  某些情况下需要通知用户你的应用程序中发生了一个事件。一些事件请求用户应答而另外一些则不需要。比如:
  * 当一个事件比如保存文件结束时,应该出现一条消息确认保存成功。(Toast适用)
  * 如果一个后台运行的应用程序需要用户关注,这个应用程序应该创建一个通知来允许用户在方便时进行应答。(后台程序,状态栏通知适用)
  * 如果这个应用程序在执行一个用户必须等待的任务(比如加载一个文件),那么应用程序应该显示一个盘旋的进度轮或进度条。(进度条Dialog适用)
  所有这些通知任务可以通过一个不同的技术获取到:
  * 一个消息条通知Toast Notification, 用于从后台出现的简短信息。for brief messages that come from the background。
  * 一个状态条通知A Status Bar Notification, 用于来自后台的持续提醒并请求用户应答。
  * 一个对话框通知A Dialog Notification, 用于活动相关的通知。

  消息条通知Toast Notification

  一个消息条通知是一个在窗口表面弹出的信息。它只填充内容所需的空间并且用户当前活动仍然保持可见和可交互。这个通知自动渐入渐出,而且不接受交互事件。因为消息条可以从一个后台服务Service中创建,即便应用程序不可见,它也将呈现出来。

       Toast的创建和显示都很简单,如果不使用自定义的view,只是显示文字,makeText函数就能做到了:

java代码:
Toast.makeText(getApplicationContext(), // Context context



"This is a simple toast!", //显示的text或者引用resource.string的id



Toast.LENGTH_LONG) //显示的时间长度,



//LENGTH_LONG - 时间长些,>1s;



//LENGTH_SHORT- 时间短



.show(); //显示出来
复制代码
       自定义Toast
       而如果想使用custom view,首先要写个custom Layout xml文件(toastlayout.xml):

java代码:
<?xml version="1.0" encoding="utf-8"?>



<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android

android:id="@+id/toast_layout"

androidrientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="10dp"

android:background="#DAAA"

>



<ImageView

android:id="@+id/toast_icon"

android:layout_width="wrap_content"

android:layout_height="fill_parent"

android:layout_marginRight="10dp"

android:src="@drawable/icon"

/>



<TextView

android:id="@+id/toast_text"

android:layout_width="wrap_content"

android:layout_height="fill_parent"

android:textColor="#FFF"

/>



</LinearLayout>
复制代码
      注意: TextView的layout_height设置为wrap_content的话,发现左边的图片会跟随文字内容的高度而变化,就是说当文字只有一行的时候,图片的高度就变得只有一行的高度,不好看!图片的src可以不在xml文件里面定义,可以在真正显示时用以下语句来设置:

java代码:
ImageView image = (ImageView) layout.findViewById(R.id.image);



image.setImageResource(R.drawable.android);
复制代码
        以下是显示custom toast view:

java代码:
//加载Layout



View view = getLayoutInflater().inflate(R.layout.toastlayout, //resource id

(ViewGroup) findViewById(R.id.toast_layout)); //ViewGroup对象





//设置Text

((TextView) view.findViewById(R.id.toast_text)).setText("This is a custom toast!");



//创建Toast

Toast toast = new Toast(getApplicationContext());



// 设置显示的位置

toast.setGravity( Gravity.CENTER_VERTICAL, //垂直居中

0, //xOffset

0 //yOffset

);





toast.setDuration(Toast.LENGTH_LONG);

toast.setView(view); // ** 这个很重要

toast.show();
复制代码
       消息条Toast是用来显示简短文本信息的最好方法,比如“文件已保存”,当你很确信用户正在关注屏幕时。一个消息条不能接受用户交互事件;如果你希望用户应答并采取相应动作,请考虑使用一个状态条通知Status Bar Notification。

  状态条通知Status Bar Notification

  一个状态条通知添加一个图标到系统状态栏上(以及一个可选的滚动条文本信息)以及在这个“通知”窗口中的一个扩展消息。当用户选择这个扩展消息时,Android发出这个通知所定义的一个意图(通常是启动一个活动)。你也可以配置这个通知来通过一个声音,震动和设备上的闪烁灯来警告用户。

  当你的应用程序以后台服务运行并需要通知用户事件时,这类通知是一个理想的方式。如果你需要在活动仍处于焦点下时警告用户一个发生的事件,请考虑使用对话框通知Dialog Notification 。

java代码:
// 获取NotificationManager



mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);



// 创建PendingIntent, 明确响应后转向的Activity

contentIntent = PendingIntent.getActivity(

getApplicationContext(),0,new Intent(getApplicationContext(),FrameDemo.class), //响应Notification转向的Activity

0);



//实例化一个Notification,并指定其图标和标题(在提示栏上显示)



mNotification = new Notification(R.drawable.icon, // icon

"Notification", // 状态栏上显示的滚动提示文字tickerText

System.currentTimeMillis());//Notification计划执行的开始时间





//设置Notification的Title和详细内容(打开提示栏后在通知列表中显示)

mNotification.setLatestEventInfo(

getApplicationContext(),"Notification open", // Title

"This is a simple notification", //content

contentIntent); //PendingIntent是在这时候用的



//100 毫秒延迟后,震动 250 毫秒,暂停 100 毫秒后,再震动 500 毫秒

mNotification.vibrate = new long[] { 100, 250, 100, 500 };

//mNotification.defaults |= Notification.DEFAULT_VIBRATE; //或者设置默认的震动效果



//设置闪灯绿光,也可以设置默认的效果,请参考API DOC

mNotification.ledARGB = 0xff00ff00;

mNotification.ledOnMS = 300;

mNotification.ledOffMS = 1000;

mNotification.flags |= Notification.FLAG_SHOW_LIGHTS;



//设置声音,可以选择以下任一方式,但要注意,当defaults已经包含了DEFAULT_SOUND,将覆盖之前指定的音频文件的设置



mNotification.defaults |= Notification.DEFAULT_SOUND; //系统默认的通知声音

//mNotification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3"); //或者指定某个音频文件



//设置声音持续重复,直至用户点击或者清除通知

mNotification.flags |= Notification.FLAG_INSISTENT;



//最后一步: NotificationManager发出通知

mNotificationManager.notify(R.id.notice1, //该Notification的IDmNotification);
复制代码

系列之Android 深入解析用户界面(一)的帖子链接http://www.eoeandroid.com/thread-103258-1-1.html
系列之Android 深入解析用户界面(二)的帖子链接http://www.eoeandroid.com/thread-103259-1-1.html
系列之Android 深入解析用户界面(三)的帖子链接http://www.eoeandroid.com/thread-103263-1-1.html
系列之Android 深入解析用户界面(四)的帖子链接http://www.eoeandroid.com/thread-103266-1-1.html
系列之Android 深入解析用户界面(五)的帖子链接http://www.eoeandroid.com/thread-103437-1-1.html
系列之Android 深入解析用户界面(六)的帖子链接http://www.eoeandroid.com/thread-103438-1-1.html
系列之Android 深入解析用户界面(七)的帖子链接http://www.eoeandroid.com/thread-103445-1-1.html
系列之Android 深入解析用户界面(八)的帖子链接http://www.eoeandroid.com/thread-103448-1-1.html
系列之Android 深入解析用户界面(十)的帖子链接http://www.eoeandroid.com/thread-105424-1-1.html
系列之Android 深入解析用户界面(十一)的帖子链接http://www.eoeandroid.com/thread-105434-1-1.html
系列之Android 深入解析用户界面(十二)的帖子链接http://www.eoeandroid.com/thread-103461-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 18:45 , Processed in 0.307499 second(s), 38 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表