成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android Notifications通知詳解

移動(dòng)開(kāi)發(fā) Android
Android提供了三種通知類(lèi)型方式:Toast Notifications、Status Bar Notification、Dialog Notification。現(xiàn)在分別來(lái)看看它們適用的場(chǎng)景與使用方法。

一、Toast Notifications

以背景改變方式,提示一些簡(jiǎn)短的消息,消息窗口自動(dòng)淡入淡出,不接受交互事件。

例如:當(dāng)下載某個(gè)文件完成時(shí),可以提示簡(jiǎn)短的“保存成功”。

顯示效果:

創(chuàng)建彈出提示方法:

1、創(chuàng)建Toast對(duì)象,可以通過(guò)Toast提供的靜態(tài)方法makeText(Context context, String message, int duration)

context:應(yīng)用上下文對(duì)象,這里可以傳遞getApplicationContext()

message:提示文本

duration:顯示時(shí)長(zhǎng),可以使用Toast.LENGTH_SHORT、Toast.LENGTH_LONG

  1. Context context = getApplicationContext(); 
  2.  
  3. Toast toast = Toast.makeText(context, "保存成功", Toast.LENGTH_LONG); 

2、顯示提示,調(diào)用show()方法

  1. toast.show(); 

上述兩步也可簡(jiǎn)寫(xiě)為:

  1. Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG).show(); 

這樣,最簡(jiǎn)單的提示信息已經(jīng)完成。現(xiàn)在來(lái)看看如何創(chuàng)建自定義外觀Toast notification。

3、自定義外觀Toast通知

3.1、定義XML資源視圖作為提示的外觀

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.               android:id="@+id/toast_layout_root" 
  4.               android:orientation="horizontal" 
  5.               android:layout_width="fill_parent" 
  6.               android:layout_height="fill_parent" 
  7.               android:padding="10dp" 
  8.               android:background="#DAAA" 
  9.               > 
  10.     <ImageView android:id="@+id/image" 
  11.                android:layout_width="wrap_content" 
  12.                android:layout_height="fill_parent" 
  13.                android:layout_marginRight="10dp" 
  14.                android:src="@drawable/icon" 
  15.                /> 
  16.     <TextView android:id="@+id/text" 
  17.               android:layout_width="wrap_content" 
  18.               android:layout_height="fill_parent" 
  19.               android:textColor="#FFF" 
  20.               /> 
  21. </LinearLayout> 

其中TextView文本組件用來(lái)顯示需要提示的文本。這里默認(rèn)沒(méi)有設(shè)置文字。

3.2、解析上述XML資源視圖,并設(shè)置提示文本

  1. LayoutInflater inflater = getLayoutInflater();//XML資源布局填充對(duì)象 
  2. View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root)); 
  3.  
  4. //修改自定義布局中TextView文本,作為提示信息 
  5. TextView textView = (TextView) layout.findViewById(R.id.text); 
  6. textView.setText("自定義界面:保存成功"); 

3.3、創(chuàng)建Toast對(duì)象,并設(shè)置視圖、顯示視圖

  1. Toast toast = new Toast(getApplicationContext()); 
  2. //設(shè)置垂直居中,水平、垂直偏移值為0,表示正中間。 
  3. toast.setGravity(Gravity.CENTER_VERTICAL, 00);//設(shè)置提示框位置,三個(gè)參數(shù)分別代表:對(duì)其方式、水平偏移值、垂直偏移值。 
  4. toast.setDuration(Toast.LENGTH_LONG); 
  5. toast.setView(layout);//設(shè)置顯示的視圖 
  6. toast.show(); 

顯示效果圖:

#p#

二、Status Bar Notification

狀態(tài)欄通知。當(dāng)某個(gè)應(yīng)用處于后臺(tái)運(yùn)行時(shí)需要提示用戶(hù)某些信息時(shí),不可能啟動(dòng)Activity。這時(shí)使用狀態(tài)欄通知就非常合適。

例如:最經(jīng)典的就是當(dāng)接收到新短信時(shí),可以在通知欄看到簡(jiǎn)要信息。

創(chuàng)建狀態(tài)欄通知的過(guò)程:

1.取得通知管理器

  1. NotificationManager manager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 

2.實(shí)例化通知對(duì)象

  1. /** 
  2.  * new Notification(int icon, String message, long when) 
  3.  * 參數(shù)1:通知圖標(biāo) 
  4.  * 參數(shù)2:簡(jiǎn)短提示文本 
  5.  * 參數(shù)3:何時(shí)顯示,這里使用的是時(shí)間戳 
  6.  */ 
  7. Notification notification = new Notification(R.drawable.icon, "狀態(tài)欄通知測(cè)試", System.currentTimeMillis()); 

3.定義通知的詳細(xì)信息、及PendIntent來(lái)設(shè)置激活的Activity

  1. //這里設(shè)置意圖處理很簡(jiǎn)單,僅僅是當(dāng)用戶(hù)觸摸詳細(xì)信息時(shí),將會(huì)顯示MainActivity界面 
  2.         Intent notificationIntent = new Intent(this, MainActivity.class); 
  3.         PendingIntent pendingIntent = PendingIntent.getActivity(this200, notificationIntent, 0); 
  4.         notification.setLatestEventInfo(this"通知完整標(biāo)題""通知內(nèi)容", pendingIntent); 

4.傳遞到通知管理器,加入到通知隊(duì)列

  1. manager.notify(11, notification); 

這樣,就完成了一個(gè)簡(jiǎn)單的狀態(tài)欄通知。

除此之外,還可以設(shè)置通知的提示方式,如震動(dòng)、音樂(lè)、閃爍等。

設(shè)置提示聲音:

  1. notification.sound = Uri.parse("file:///sdcard/On Call.mp3"); 

設(shè)置震動(dòng)的交替模式:

  1. notification.vibrate  = new long[]{0,100,200,300}; 

這里vibrate是一個(gè)長(zhǎng)整型數(shù)組,用來(lái)設(shè)置震動(dòng)交替時(shí)長(zhǎng),第一個(gè)值表示震動(dòng)開(kāi)始之前,第二個(gè)值表示第一次震動(dòng)的時(shí)間,第三個(gè)值表示第二次震動(dòng)的時(shí)間,以次類(lèi)推。

#p#

三、Dialog Notification

一個(gè)對(duì)話(huà)框,用于遮擋當(dāng)前界面,使得當(dāng)前界面失去焦點(diǎn)。

通常用于鎖定屏幕,提示用戶(hù)等待等場(chǎng)景。例如:某個(gè)文件正在下載,出現(xiàn)提示等待。成功下載之后才能允許用戶(hù)進(jìn)行其他操作。

常用Dialog類(lèi)型有:Alert Dialog、ProgressDialog、Custom Dialog

1.使用AlertDialog創(chuàng)建選擇窗口、列表窗口、單選窗口、多選窗口

1.1選擇窗口

效果:

創(chuàng)建彈窗方法:

  1.     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
  2.     builder.setCancelable(false);//設(shè)置當(dāng)點(diǎn)擊返回按鈕后,默認(rèn)表示的行為。這里設(shè)置為false 
  3.     builder.setMessage("dialog彈窗標(biāo)題"); 
  4.      
  5.     //設(shè)置true按鈕 
  6.     builder.setPositiveButton("Yes"new OnClickListener() { 
  7.     @Override 
  8.     public void onClick(DialogInterface dialog, int which) { 
  9.         Toast.makeText(getApplicationContext(), "您選擇了Yes", Toast.LENGTH_LONG).show(); 
  10.     } 
  11. }); 
  12.      
  13.     //設(shè)置false按鈕 
  14.     builder.setNegativeButton("No"new OnClickListener() { 
  15.     @Override 
  16.     public void onClick(DialogInterface dialog, int which) { 
  17.         dialog.cancel(); 
  18.     } 
  19. }); 
  20.      
  21.     //顯示 
  22.     builder.show(); 

1.2列表窗口

效果:

創(chuàng)建方法:

  1.     final String[] list = new String[]{"item1""item2""item3"}; 
  2.      
  3.     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
  4.     builder.setTitle("dialog list彈窗標(biāo)題"); 
  5.     /** 
  6.      * setItems(CharSequence[] items, OnClickListener listener) 
  7.      * items:接收字符串?dāng)?shù)組,作為下拉列表選項(xiàng) 
  8.      * listener:監(jiān)聽(tīng)選中事件 
  9.      */ 
  10.     builder.setItems(list, new OnClickListener() { 
  11.  
  12. @Override 
  13. /** 
  14.  * dialog:表示當(dāng)前彈窗對(duì)象 
  15.  * which:表示當(dāng)前選中項(xiàng)的對(duì)應(yīng)list數(shù)組的序號(hào) 
  16.  */ 
  17. public void onClick(DialogInterface dialog, int which) { 
  18.     Toast.makeText(getApplicationContext(), "您選擇了:"+list[which], Toast.LENGTH_LONG).show(); 
  19. ); 
  20.      
  21.     builder.show(); 

1.3單選列表彈窗

效果:

創(chuàng)建方法:

  1.     final String[] list = new String[]{"item1""item2""item3"}; 
  2.      
  3.     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
  4.     builder.setTitle("dialog list_single彈窗標(biāo)題"); 
  5.     /** 
  6.      * setSingleChoiceItems(CharSequence[] items, int checkedItem, OnClickListener listener) 
  7.      * items:下拉列表字符串?dāng)?shù)組 
  8.      * checkedItem:默認(rèn)選中的數(shù)組序號(hào),-1表示沒(méi)有默認(rèn)選中項(xiàng) 
  9.      * listener:監(jiān)聽(tīng)選中事件,注意!,單選、多選彈窗,當(dāng)選擇某個(gè)項(xiàng)時(shí),默認(rèn)是不會(huì)關(guān)閉彈窗的。需要手動(dòng)關(guān)閉。 
  10.      */ 
  11.     builder.setSingleChoiceItems(list, -1new OnClickListener() { 
  12.      
  13.     @Override 
  14.     public void onClick(DialogInterface dialog, int which) { 
  15.         Toast.makeText(getApplicationContext(), list[which], Toast.LENGTH_SHORT).show(); 
  16.         dialog.cancel(); 
  17.         //這里,當(dāng)用戶(hù)選中某個(gè)項(xiàng)時(shí),提示選中文字,并關(guān)閉彈窗 
  18.     } 
  19. }); 
  20.      
  21.     builder.show(); 

1.4多選列表彈窗

效果:

創(chuàng)建方法:

  1.     final String[] list = new String[]{"item1""item2""item3"}; 
  2.      
  3.     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
  4.     builder.setTitle("dialog list_mutil彈窗標(biāo)題"); 
  5.     /** 
  6.      * setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener) 
  7.      * items:下拉列表字符串?dāng)?shù)組 
  8.      * checkedItems:boolean數(shù)組,如果需要默認(rèn)被選中,可以傳遞。null表示沒(méi)有默認(rèn)選中項(xiàng) 
  9.      * listener:監(jiān)聽(tīng)選中事件,注意!,單選、多選彈窗,當(dāng)選擇某個(gè)項(xiàng)時(shí),默認(rèn)是不會(huì)關(guān)閉彈窗的。需要手動(dòng)關(guān)閉。 
  10.      */ 
  11. builder.setMultiChoiceItems(list, nullnew OnMultiChoiceClickListener() { 
  12.      
  13.     @Override 
  14.     public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
  15.         Toast.makeText(getApplicationContext(), list[which], Toast.LENGTH_SHORT).show(); 
  16.         dialog.cancel(); 
  17.     } 
  18. }); 
  19.  
  20. builder.show(); 

2、自定義彈窗

如果需要自定義彈窗外觀,那么可以使用自定義彈窗。

下面一個(gè)自定義彈窗效果,并看看是如何實(shí)現(xiàn)的。

  1. AlertDialog.Builder builder; 
  2. LayoutInflater inflater = getLayoutInflater(); 
  3. View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)findViewById(R.id.layout_root)); 
  4.  
  5. TextView text = (TextView) layout.findViewById(R.id.text); 
  6. text.setText("這是自定義彈窗"); 
  7.  
  8. builder = new AlertDialog.Builder(getApplicationContext()); 
  9. builder.setView(layout); 
  10. builder.show(); 

實(shí)際上自定義彈窗,就是使用自定義界面并覆蓋原有視圖內(nèi)容。

責(zé)任編輯:徐川 來(lái)源: csdn
相關(guān)推薦

2010-01-25 17:14:44

Android應(yīng)用程序

2010-08-01 15:16:41

Android

2010-02-23 14:48:38

WCF事件通知

2025-05-29 01:22:00

FeignJSONRPC

2012-06-20 09:58:23

Android 4.0通知系統(tǒng)

2012-06-14 10:08:18

2014-07-28 10:09:30

Android

2011-05-27 15:02:15

Android ListView

2013-11-14 10:42:48

MTPAndroid

2014-07-24 09:11:34

2017-01-11 19:05:45

AndroidAndroid Loa詳解

2013-11-14 16:50:08

2023-11-19 23:19:09

2011-08-19 10:55:16

Cocoa通知委托

2013-12-25 09:34:26

Android SDKAndroid組件

2010-07-13 09:02:19

Widget開(kāi)發(fā)

2021-09-07 08:49:35

Android

2011-09-09 20:14:58

Android Wid

2013-01-10 14:39:28

Android開(kāi)發(fā)Content Pro組件

2024-03-12 10:05:04

應(yīng)用程序推送通知
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天堂一区二区三区 | 一区二区三区视频在线观看 | 国产在线一区二区三区 | 欧美日韩一区二区三区视频 | 欧美视频一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 日韩毛片中文字幕 | 国产www.| 精品欧美一区二区三区 | 国产精品夜间视频香蕉 | 欧美精品导航 | 国产激情在线看 | 亚洲欧美一区二区三区国产精品 | 国产一区二区自拍 | 中文字幕成人 | 羞羞视频网站 | 国产高清视频在线观看 | 一区二区三区播放 | 91精品国产综合久久婷婷香蕉 | 九九天堂网 | www.久| 免费午夜视频 | 黄色片a级 | 日韩亚洲一区二区 | 人人射人人草 | 成人欧美一区二区三区在线观看 | 久久99视频免费观看 | 视频二区在线观看 | 亚洲一区二区久久久 | 四虎影院免费在线 | a视频在线观看 | 午夜影院在线观看版 | 日韩成人在线观看 | 久久久精品影院 | 一区二区三区精品视频 | 成人精品啪啪欧美成 | a在线免费观看视频 | 中文在线一区二区 | 日韩中文字幕一区二区 | 中文字幕第三页 | 99爱免费 |