Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- 系統和自定義Notification

Android -- 系統和自定義Notification

編輯:關於Android編程

Notification是一種讓你的應用程序在不使用Activity的情況下警示用戶,Notification是看不見的程序組件警示用戶有需要注意的事件發生的最好途徑。   作為UI部分,Notification對移動設備來說是最適合不過的了。用戶可能隨時都帶著手機在身邊。一般來說,用戶會在後台打開幾個程序,但不會注意它們。在這樣的情形下,當發生需要注意的事件時,能夠通知用戶是很重要的。   Notification由NotificationManger統一管理,目前包含的能力有:   創建一個狀態條圖標。 在擴展的狀態條窗口中顯示額外的信息(和啟動一個Intent)。 閃燈或LED。 電話震動。 發出聽得見的警告聲(鈴聲,保存的聲音文件)。 調用系統API的Notification                                                          復制代碼 public void click1(View view) {         //1.獲取系統通知的管理者          NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);         //2.初始化一個notification的對象          Notification notification = new Notification(R.drawable.notification, "我是滾動的文本",  System.currentTimeMillis() );         //3.設置notification的具體參數          notification.flags = Notification.FLAG_AUTO_CANCEL;         // notification.sound = Uri.parse(uriString);          Intent intent = new Intent();          intent.setAction(Intent.ACTION_VIEW);          intent.setData(Uri.parse("http://www.baidu.com"));          PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);          notification.setLatestEventInfo(this, "我是大的標題", "我是標題下面的內容", contentIntent);          //4.直接把消息給 notification的管理者          nm.notify(0, notification);     } 復制代碼 自定義Notification                                                                        復制代碼 public class MainActivity extends Activity {       protected int mProgress;     private Notification notification;     private RemoteViews rv;     private NotificationManager nm;     private PendingIntent contentIntent;       @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);       }       public void clicklala(View view)     {         //1.獲取系統通知的管理者         nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);         //2.初始化一個notification的對象         long when = System.currentTimeMillis();         String tickerText = "iiiipppp";         notification = new Notification(R.drawable.ic_launcher,tickerText,when);         //3.設置notification的具體參數         //不能手動清理掉         notification.flags = Notification.FLAG_AUTO_CANCEL;         // notification.contentView = 自定義的notification view         rv = new RemoteViews(getPackageName(), R.layout.notify);         rv.setTextViewText(R.id.tv_rv, "我是自定義的notification");         rv.setProgressBar(R.id.pb_rv, 100, 0, false);         notification.contentView = rv;           Intent intent = new Intent();         intent.setAction(Intent.ACTION_VIEW);         intent.setData(Uri.parse("http://www.baidu.com"));         contentIntent = PendingIntent.getActivity(this, 0, intent, 0);         notification.contentIntent = contentIntent;                  //4.直接把消息給 notification的管理者         nm.notify(0, notification);           // 啟動多線程更新Notification提醒。          new Thread(new Runnable() {               public void run() {                   for (int i = 0; i < 20; i++) {                       mProgress = (i + 1) * 5;                       try {                           if (i < 19) {                               Thread.sleep(1000);                           } else {                               Thread.currentThread().interrupt();                           }                       } catch (InterruptedException e) {                           e.printStackTrace();                       }                       Message message = new Message();                       mHandler.sendMessage(message);                   }               }           }).start();     }     private Handler mHandler = new Handler() {           public void handleMessage(Message message) {                 //設置RemoteView組件中進度條的進度值。              rv.setProgressBar(R.id.pb_rv, 100, mProgress, false);               rv.setTextViewText(R.id.tv_rv, "Download:" + mProgress + "%");               //給Notification設置布局。               notification.contentView = rv;               /給Notification設置Intent,單擊Notification會發出這個Intent。              notification.contentIntent = contentIntent;               //發送Notification提醒。                nm.notify(0, notification);               super.handleMessage(message);           }       };   } 復制代碼 布局:   復制代碼 <?xml version="1.0" encoding="utf-8"?>   <LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="match_parent">    <TextView      android:id="@+id/tv_rv"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="haha"    />    <ProgressBar      style="@android:style/Widget.ProgressBar.Horizontal"     android:id="@+id/pb_rv"     android:layout_width="wrap_content"     android:layout_height="wrap_content"    />    </LinearLayout>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved