亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android中通過(guò)Notification&NotificationManager實(shí)現(xiàn)消息通知

 更新時(shí)間:2015年10月22日 09:45:27   作者:盡情飛奔  
關(guān)于通知Notification相信大家都不陌生了,平時(shí)上QQ的時(shí)候有消息來(lái)了或者有收到了短信,手機(jī)頂部就會(huì)顯示有新消息什么的,就類(lèi)似這種。今天就稍微記錄下幾種Notification的用法。3.0以前的通知和3.0以后的通知是有些區(qū)別的。

notification是一種讓你的應(yīng)用程序在沒(méi)有開(kāi)啟情況下或在后臺(tái)運(yùn)行警示用戶。它是看不見(jiàn)的程序組件(Broadcast Receiver,Service和不活躍的Activity)警示用戶有需要注意的事件發(fā)生的最好途徑。

  1、新建一個(gè)android項(xiàng)目

    我新建項(xiàng)目的 minSdkVersion="11",targetSdkVersion="19"。也就是支持最低版本的3.0的。

  2、習(xí)慣性地打開(kāi)項(xiàng)目清單文件AndroidManifest.xml,添加一個(gè)權(quán)限:<uses-permission android:name="android.permission.VIBRATE"/> 不添加不行的。

  3、在布局activity_main.xml中添加幾個(gè)按鈕,樣子就大概這樣,垂直排版的LinearLayout

具體代碼

<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:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:orientation="vertical"
  tools:context=".MainActivity" >
    <Button 
      android:id="@+id/btn_01"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="3.0以前版本的notification,用新的吧"
      android:onClick="click"
      />
    <Button 
      android:id="@+id/btn_02"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="大視圖文本通知"
      android:onClick="click"
      />
    <Button 
      android:id="@+id/btn_03"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="大視圖圖片通知"
      android:onClick="click"
      />
    <Button 
      android:id="@+id/btn_04"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="進(jìn)度條通知"
      android:onClick="click"
      />
</LinearLayout>

   

4、MainActivity中的代碼:

 package com.xin.day__notificationdemo;
  import java.util.Timer;
  import java.util.TimerTask;
  import android.app.Activity;
  import android.app.Notification;
  import android.app.NotificationManager;
  import android.app.PendingIntent;
 import android.content.Intent;
 import android.graphics.BitmapFactory;
 import android.os.Bundle;
 import android.support.v.app.NotificationCompat;
 import android.support.v.app.NotificationCompat.BigPictureStyle;
 import android.support.v.app.NotificationCompat.BigTextStyle;
 import android.support.v.app.NotificationCompat.Builder;
 import android.util.Log;
 import android.view.View;
 public class MainActivity extends Activity {
   //通知的唯一標(biāo)識(shí),在一個(gè)應(yīng)用程序中不同的通知要區(qū)別開(kāi)來(lái)
   private static final int NO = x;
   private static final int NO = x;
   private static final int NO = x;
   private static final int NO = x;
   //進(jìn)度條要用
   private int progress = ;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
   }
   //click方法,和xml文件中的各個(gè)按鈕的onClick屬性的值要一致
   public void click(View view) {
     //創(chuàng)建NotificationManager
     final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
     //用switch語(yǔ)句控制四個(gè)控件
     switch (view.getId()) {
     case R.id.btn_: {
       Notification notification = new Notification();
       notification.icon = R.drawable.ic_launcher;
       notification.tickerText = "有消息了。。。";
       Intent intent = new Intent(this, MainActivity.class);
       PendingIntent pendingIntent = PendingIntent.getActivity(this, ,
           intent, PendingIntent.FLAG_UPDATE_CURRENT);
       notification.setLatestEventInfo(this, ".以前的通知", "試試而已", pendingIntent);
       notification.when = System.currentTimeMillis();
       notification.defaults = Notification.DEFAULT_ALL;
       notification.flags = Notification.FLAG_AUTO_CANCEL;
       notification.number = ;
       notification.vibrate = new long[]{, };
       manager.notify(NO, notification);
     }
     break;
     case R.id.btn_:{
       //大視圖文本通知
       //創(chuàng)建消息構(gòu)造器,在擴(kuò)展包
       NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
       //設(shè)置當(dāng)有消息是的提示,圖標(biāo)和提示文字
       builder.setSmallIcon(R.drawable.ic_launcher).setTicker("有新消息了");
       //需要樣式
       BigTextStyle style = new BigTextStyle();
       style.setBigContentTitle("上課通知");//通知的標(biāo)題
       style.bigText("今天下午要在綜B上jsp");//通知的文本內(nèi)容
       //大視圖文本具體內(nèi)容
       style.setSummaryText("這是正常的課程安排,請(qǐng)各位同學(xué)按時(shí)上課");
       builder.setStyle(style);
       //顯示消息到達(dá)的時(shí)間,這里設(shè)置當(dāng)前時(shí)間
       builder.setWhen(System.currentTimeMillis());
       //獲取一個(gè)通知對(duì)象
       Notification notification = builder.build();
       notification.flags = Notification.FLAG_AUTO_CANCEL;
       //發(fā)送(顯示)通知
       //notify()第一個(gè)參數(shù)id An identifier for this notification unique within your application
       //get?意思說(shuō),這個(gè)通知在你的應(yīng)用程序中唯一的標(biāo)識(shí)符
       manager.notify(NO, notification);
     }
     break;
     case R.id.btn_:{
       //大視圖圖片通知
       NotificationCompat.Builder builderPic = new Builder(this);
       builderPic.setSmallIcon(R.drawable.ic_launcher).setTicker("新浪體育提醒");
       //進(jìn)行設(shè)置
       BigPictureStyle pictureStyle = new BigPictureStyle();
       pictureStyle.setBigContentTitle("新浪體育 快船VS騎士 ");
       pictureStyle.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_game));
       pictureStyle.setSummaryText(" 快船VS騎士 天王山之戰(zhàn)?。?!");//不要在意文字
       //設(shè)置樣式
       builderPic.setStyle(pictureStyle);
       //設(shè)置顯示的時(shí)間
       builderPic.setWhen(System.currentTimeMillis());
       Notification notification = pictureStyle.build();
       notification.flags = Notification.FLAG_AUTO_CANCEL;
       //
       manager.notify(NO, notification);
     }
     break;
     case R.id.btn_:{
       //進(jìn)度條通知
       final NotificationCompat.Builder builderProgress = new NotificationCompat.Builder(this);
       builderProgress.setSmallIcon(R.drawable.ic_launcher).setTicker("進(jìn)度條通知");
       builderProgress.setProgress(, progress, false);
       final Notification notification = builderProgress.build();
       //發(fā)送一個(gè)通知
       manager.notify(NO, notification);
       //創(chuàng)建一個(gè)計(jì)時(shí)器
       Timer timer = new Timer();
       timer.schedule(new TimerTask(){
         @Override
         public void run() {
           Log.i("progress",progress+"");
           while(progress <= ){
             progress ++;
             try {
               Thread.sleep();
             } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
             }
             //更新進(jìn)度條
             builderProgress.setProgress(, progress, false);
             //再次通知
             manager.notify(NO, builderProgress.build());
           }
           //計(jì)時(shí)器退出
           this.cancel();
           //進(jìn)度條退出
           manager.cancel(NO);
           return;//結(jié)束方法
         }
       }, );
     }
     break;
     default:
       break;
     }
   }
 }

5、運(yùn)行:我的虛擬機(jī)版本是4.0的(api19),按住通知左(右)滑動(dòng)就可以讓通知小時(shí)了。

效果如下:


相關(guān)文章

最新評(píng)論