一、在佈局文件里布局文件activity_main.xml佈局文件android
代碼安全
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >ide
<Button
android:id="@+id/btn_simpleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="簡單文本的通知"
android:onClick="notifySimpleText"/>
<Button
android:id="@+id/btn_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="進度通知"
android:onClick="notifyProgress"/>
<Button
android:id="@+id/btn_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="列表通知"
android:onClick="notifyList"/>
<Button
android:id="@+id/btn_bigimage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="大圖標通知"
android:onClick="notifyBigImage"/>佈局
</LinearLayout>
ui
------------------------------------this
二、在MainActivity 類裏 實現通知的基本操做線程
代碼code
public class MainActivity extends Activity {xml
private NotificationManager notifmg;對象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 系統的 通知管理器
notifmg = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);
}
=========================
// 簡單文本的通知
public void notifySimpleText(View view) {
// 建立一個通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
// 設置通知的 一些屬性
builder.setSmallIcon(R.drawable.ic_launcher)// 設置通知小圖標
.setContentTitle("消息提示") // 設置標題
.setContentText("注意:明天有強風,請注意安全")// 設置通知文本內容
// 不斷滾動該內容
/*.setTicker(
"注意:明天有強風,請注意安全!注意:明天有強風,請注意安全注意:明天有強風,請注意安全注意:明天有強風,請注意安全注意:明天有強風,請注意安全")*/
// 設置通知的聲音和 震動
.setDefaults(
Notification.DEFAULT_SOUND
| Notification.DEFAULT_VIBRATE)
// 第二個參數 -- 響應碼
// 第三個參數 -- Intent
.setContentIntent(
PendingIntent.getActivity(this, 100, new Intent(
Intent.ACTION_CALL, Uri.parse("tel:10086")),
PendingIntent.FLAG_ONE_SHOT));
// 啓動通知
// 第一個參數 -- id
// 第二個參數 -- 要啓動的通知對象.build方法
notifmg.notify(1, builder.build());
}
效果圖示例
======================
//進度通知 -- 有2個通知 -- 一、下載進度通知
// 二、下完完成通知
public void notifyProgress(View view){
//開闢一個線程
new Thread(new Runnable() {
@Override
public void run() {
//建立一個 通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)//設置通知小圖標
.setContentTitle("消息提示")
.setContentText("正在下載...");
for(int i = 0;i<100;i++){
builder.setProgress(100, i, false);
notifmg.notify(2,builder.build());//啓動通知
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//下載完後 取消 該通知
notifmg.cancel(2);
//從新new一個通知
builder = new NotificationCompat.Builder(MainActivity.this);
//注意: 必定要有setSmallIcon 否則 該 通知 看不見
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示")
.setContentText("下載完成");
notifmg.notify(3,builder.build());
}
}).start();
}
效果圖示例
======================================================
//列表通知
public void notifyList(View view){
//建立一個通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示");
//建立一個類型
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
style.addLine("哈哈哈");
style.addLine("aaaaaaaa");
style.addLine("嗚嗚嗚嗚");
//設置通知的類型
builder.setStyle(style);
notifmg.notify(4,builder.build());
}
效果圖示例
====================================================
//海報等大圖通知
public void notifyBigImage(View view){
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示");
//建立一個類型
NotificationCompat.BigPictureStyle bps = new NotificationCompat.BigPictureStyle();
//第二個參數放 提示的圖片
bps.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
//第一個參數 -- 使用Bitmap工廠把圖片資源轉換成Bitmap類型
//第二個參數 -- 要推送的海報等大圖
bps.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.xxx));
builder.setStyle(bps);//設置成大圖標的類型
notifmg.notify(5,builder.build());//啓動通知
}
}
效果圖示例