Notification是一種讓你的應用程序在不使用Activity的情況下警示用戶,Notification是看不見的程序組件警示用戶有需要注意的事件發生的最好途徑。
作爲UI部分,Notification對移動設備來說是最適合不過的了。用戶可能隨時都帶着手機在身邊。一般來說,用戶會在後臺打開幾個程序,但不會注意它們。在這樣的情形下,當發生需要注意的事件時,能夠通知用戶是很重要的。
Notification由NotificationManger統一管理,目前包含的能力有:
❑創建一個狀態條圖標。
❑在擴展的狀態條窗口中顯示額外的信息(和啓動一個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);
}
}