android-UI组件实例大全(十三)------消息提示框:Toast和Notification

Toast显示消息提示框:


Toast是一种很方便的消息提示框,会在屏幕中显示一个消息提示框,没任何按钮,也不会获得焦点

一段时间过后自动消失


创建Toast的对象有两种方法,

一种直接调用Toast类的makeText()方法创建,

一种是通过构造方式进行创建

下面依次演示下两种创建Toast对象的方法:


实例:消息提示框Toast的使用

代码:

MainActivity:


[java]  view plain copy
  1. <span style="font-family:Comic Sans MS;">public class MainActivity extends Activity {  
  2.   
  3.     private Button btnToast;  
  4.     private Button btnImgToast;  
  5.       
  6.     @Override  
  7.     protected void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.activity_main);  
  10.           
  11.         btnToast = (Button) findViewById(R.id.btntoast);  
  12.         btnImgToast = (Button) findViewById(R.id.btnimgtoast);  
  13.         //1.使用Toast类的makeText()方法直接生成Toast信息  
  14.         btnToast.setOnClickListener(new OnClickListener() {  
  15.               
  16.             @Override  
  17.             public void onClick(View v) {     
  18.                 Toast.makeText(MainActivity.this"用Toast类makeText()弄的普通的Toast提示", Toast.LENGTH_LONG).show();  
  19.             }  
  20.         });  
  21.           
  22.         //2.定义一个Toast对象,通过构造方法构建  
  23.         btnImgToast.setOnClickListener(new OnClickListener() {  
  24.               
  25.             @Override  
  26.             public void onClick(View v) {  
  27.                 Toast toast = new Toast(MainActivity.this);  
  28.                 //设置持续时间  
  29.                 toast.setDuration(Toast.LENGTH_LONG);  
  30.                 //设置toast的位置,参数依次为对齐方式,x,y的偏移值  
  31.                 toast.setGravity(Gravity.CENTER, 00);  
  32.                 //设置一个线性布局,图片和一个TextView  
  33.                 LinearLayout line = new LinearLayout(MainActivity.this);  
  34.                 ImageView img = new ImageView(getApplicationContext());  
  35.                 img.setImageResource(R.drawable.chaomeng);  
  36.                 //设置imageview的内边距,参数依次为左上右下,这里的话可以理解为添加空白5px  
  37.                 img.setPadding(0050);  
  38.                 line.addView(img);  
  39.                   
  40.                 TextView text = new TextView(getApplicationContext());  
  41.                 text.setText("我是构造方法创建的有图片的Toast!");  
  42.                 line.addView(text);  
  43.                 toast.setView(line);  
  44.                 toast.show();  
  45.             }  
  46.         });  
  47.     }  
  48. }</span>  

运行截图:

 



代码解释:

setDuration(int time):设置Toast的持续时间,通常用Toast.LENGTH_LONG/SHORT,当然也可以直接用普通数字,=10这样

setGravity(int gravity,int x,int y):设置提示框的位置,参数依次为对齐位置,相对于x,y的偏移值

setPadding(int 左,int 上,int 右,int 下):设置内边距,前后左右的空格,可以这样理解

setView:设置提示框显示的视图




Notification:在状态栏中显示通知:

在我们平时使用android手机时,当收到短信的时候,手机的顶部会出现一个提示信息,

Notification是一种全局效果的通知,通过NotificationManager服务来发送Notification

如图:


就是这种小提示,这里顺道给大家介绍如何给avd虚拟机打电话和发短信:

1.点击ddms:2.选择:Emulator Control,没有的话window->show view->other找到

3.打电话或者发短信,以后用到的定位技术,自己输入参数


很简单,读者可以自己操作下!!


好的,说回我们的Notification


使用notifycation与NotificationManager类发送显示通知的流程:



实例代码:

模仿qq信息提示:

main.xml

[html]  view plain copy
  1. <span style="font-family:Comic Sans MS;"><Button  
  2.         android:id="@+id/btnshow"  
  3.         android:layout_width="wrap_content"  
  4.         android:layout_height="wrap_content"  
  5.         android:text="显示通知" />  
  6.      <Button  
  7.         android:id="@+id/btndelete"  
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="删除通知" /></span>  
这里比较简单,就是定义了两个普通的按钮



MainActivity.java

这里的话我们定义了两个通知,一个是普通的提示,一个是关联了一个Activity的

因为第二个需要激活一个Activity,所以要新建一个Activity,并且在AndroidManifest.xml文件中进行声明


注意区分好:

代码:

[java]  view plain copy
  1. <span style="font-family:Comic Sans MS;">public class MainActivity extends Activity {  
  2.   
  3.     private Button btnshow;  
  4.     private Button btndelete;  
  5.     //定义两个Notification的ID号,等下关闭标签的时候用到  
  6.     private static final int NOTIFYID_1 = 1;  
  7.     private static final int NOTIFYID_2 = 2;  
  8.     private Notification notify1;  
  9.     private  NotificationManager notificationManager;  
  10.       
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.         //1.调用getSystemService获取通知管理器,用于发送通知  
  16.         notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  
  17.           
  18.         btnshow = (Button) findViewById(R.id.btnshow);  
  19.         btndelete = (Button) findViewById(R.id.btndelete);  
  20.           
  21.         btnshow.setOnClickListener(new OnClickListener() {  
  22.               
  23.             @Override  
  24.             public void onClick(View v) {  
  25.                   
  26.                 //2.创建一个Notification对象  
  27.                 notify1  = new Notification();  
  28.                 //3.设置图片,通知标题,发送时间,提示方式等属性  
  29.                 notify1.icon = R.drawable.bikaqiu;  
  30.                 notify1.tickerText = "你的QQ好友比卡丘给你发来了消息";  
  31.                 notify1.when = System.currentTimeMillis();    //获取当前系统的时间  
  32.                 notify1.defaults = Notification.DEFAULT_ALL;  //设置默认声音,默认震动与默认闪光灯  
  33.                 //设置过一段时间后显示的内容  
  34.                 notify1.setLatestEventInfo(getApplicationContext(), "比卡丘""好久没见了,在忙什么呢?"null);  
  35.                 //4.通过notificationManager类发送通知  
  36.                 notificationManager.notify(NOTIFYID_1,notify1);  
  37.                   
  38.                   
  39.                   
  40.                 //添加第二个通知  
  41.                 Notification notify2 = new Notification();  
  42.                 notify2.icon = R.drawable.xiaozhi;  
  43.                 //设置打开程序后图标消失  
  44.                 notify2.flags|=Notification.FLAG_AUTO_CANCEL;  
  45.                 Intent it = new Intent(getApplicationContext(),OtherActivity.class);  
  46.                 //可看做是对Intent的封装,用于处理即将发生的事情,通知Notification界面的跳转,但不是马上  
  47.                 //暂时理解为延迟的Intent吧  
  48.                 PendingIntent pit = PendingIntent.getActivity(getApplicationContext(), 0, it, 0);  
  49.                 notify2.setLatestEventInfo(getApplicationContext(), "好消息""最新版宠物小精灵出啦!!!", pit);  
  50.                 notificationManager.notify(NOTIFYID_2,notify2);  
  51.                   
  52.             }  
  53.         });  
  54.           
  55.         btndelete.setOnClickListener(new OnClickListener() {  
  56.               
  57.             @Override  
  58.             public void onClick(View v) {  
  59.                 //直接调用NotificationManager.cancel(ID号),关闭对应id好的notification  
  60.                 //notificationManager.cancel(NOTIFYID_1);  
  61.                 //当然你也可以全部关闭掉  
  62.                 notificationManager.cancelAll();  
  63.             }  
  64.         });  
  65.     }  
  66. }</span>  

运行截图:



3.点击好消息:4.点击删除提示:



代码解释:

1.注意,因为我们用到了闪光灯与振动器,所以需要在AndroidManifest.xml文件中进行权限的添加:

[html]  view plain copy
  1. <span style="font-family:Comic Sans MS;"><uses-permission android:name="android.permission.FLASHLIGHT" />  
  2.     <uses-permission android:name="android.permission.VIBRATE" /></span>  


2.notify.setDefaults:为通知设置一些默认的声音,震动或闪光灯,全部

依次分别为:Notification.DEFAULT_SOUND/VIBRATE/LIGHTS/ALL

!!!!3.这里还要注意一点,在2.3包括2.3以下的版本,使用这个程序会报莫名其妙的错误,笔者今晚在这里纠结了2个小时,

   代码检查过N遍,语法也没问题,但他就是报错,最后换了4.2的就跑起来了,所以建议大家使用3.0或以上的 avd吧


4.代码的注释都很详细,应该都能看懂,这里就不个个方法纠结了...



Notification.Builder类的使用


二.有部分读者想要自定义信息的提示音啊,还有震动的幅度什么,加上3.0以上提供了一个新的Notification.Builder类,

创建Notification显得更加轻松,这里的话我们就演示下,使用Builder类创建Notification,并且自定义一些音效,震动频率吧


实例:使用Builder创建带有自定义提示音与震动的Notification:

注意Builder的方法都是set***什么的哦!

这里的话要注意一点,因为Builder是3.0之后才推出的,但是某些属性要4.0才可以用,不然也会报错

所以先把AndroidManifest.xml的minsdk改为:14,即4.0进行代码的编写,待可运行后再改回即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值