Android自定義Notification

 Notification是一種讓你的應用程序在不使用Activity的情況下警示用戶,Notification是看不見的程序組件警示用戶有需要注意的事件發生的最好途徑

作爲UI部分,Notification對移動設備來說是最適合不過的了。用戶可能隨時都帶着手機在身邊。一般來說,用戶會在後臺打開幾個程序,但不會注意它們。在這樣的情形下,當發生需要注意的事件時,能夠通知用戶是很重要的。

NotificationNotificationManger統一管理,目前包含的能力有:

創建一個狀態條圖標。

 

在擴展的狀態條窗口中顯示額外的信息(和啓動一個Intent)。

 

閃燈或LED

 

電話震動。

 

發出聽得見的警告聲(鈴聲,保存的聲音文件)。

自定義Notification效果圖:

   

 

自定義的佈局文件:

<?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>


創建Notification

public class CustomNotificationActivity extends Activity {
	NotificationManager notificationManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //獲取到系統的notificationManager
        notificationManager =  (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    }
    
    public void click(View view ){
    	//實例化一個notification 
	     String tickerText = "IP號碼 設置完畢";
	     long when = System.currentTimeMillis();
	     Notification notification = new Notification(R.drawable.icon, tickerText, when);
	     
	     //不能手動清理
	     //notification.flags= Notification.FLAG_NO_CLEAR;
	     //添加音樂
	     //notification.sound = Uri.parse("/sdcard/haha.mp3"); 
	     
	     //設置用戶點擊notification的動作 
	     // pendingIntent 延期的意圖 
	     Intent intent = new Intent(this,Bactivity.class);
	     PendingIntent pendingIntent  = PendingIntent.getActivity(this, 0, intent, 0);
	     notification.contentIntent = pendingIntent;
    	
	     //自定義界面 
	     RemoteViews rv = new RemoteViews(getPackageName(), R.layout.noti_layout);
	     rv.setTextViewText(R.id.tv_rv, "我是自定義的 notification");
	     rv.setProgressBar(R.id.pb_rv, 80, 20, false);
	     notification.contentView = rv;
	     
	     //把定義的notification 傳遞給 notificationmanager 
	     notificationManager.notify(0, notification);
    }
}



發佈了89 篇原創文章 · 獲贊 13 · 訪問量 81萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章