Notification常見樣式總結(jié)

代碼中用的自定義常量

   public static final int TYPE_Normal = 1;
    public static final int TYPE_Progress = 2;
    public static final int TYPE_BigText = 3;
    public static final int TYPE_Inbox = 4;
    public static final int TYPE_BigPicture = 5;
    public static final int TYPE_Hangup = 6;
    public static final int TYPE_Media = 7;
    public static final int TYPE_Customer = 8;
    private NotificationManager manger = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);```

所需權(quán)限

<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>```

一怒炸、普通通知

這是最常見通知樣式,如下圖


Paste_Image.png
private void simpleNotify(){
        //為了版本兼容  選擇V7包下的NotificationCompat進(jìn)行構(gòu)造
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        //Ticker是狀態(tài)欄顯示的提示
        builder.setTicker("簡單Notification");
        //第一行內(nèi)容  通常作為通知欄標(biāo)題
        builder.setContentTitle("標(biāo)題");
        //第二行內(nèi)容 通常是通知正文
        builder.setContentText("通知內(nèi)容");
        //第三行內(nèi)容 通常是內(nèi)容摘要什么的 在低版本機(jī)器上不一定顯示
        builder.setSubText("這里顯示的是通知第三行內(nèi)容!");
        //ContentInfo 在通知的右側(cè) 時(shí)間的下面 用來展示一些其他信息
        //builder.setContentInfo("2");
        //number設(shè)計(jì)用來顯示同種通知的數(shù)量和ContentInfo的位置一樣,如果設(shè)置了ContentInfo則number會(huì)被隱藏
        builder.setNumber(2);
        //可以點(diǎn)擊通知欄的刪除按鈕刪除
        builder.setAutoCancel(true);
        //系統(tǒng)狀態(tài)欄顯示的小圖標(biāo)
        builder.setSmallIcon(R.mipmap.ic_launcher);
        //下拉顯示的大圖標(biāo)
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.push));
        Intent intent = new Intent(this,SettingsActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        //點(diǎn)擊跳轉(zhuǎn)的intent
        builder.setContentIntent(pIntent);
        //通知默認(rèn)的聲音 震動(dòng) 呼吸燈 
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        Notification notification = builder.build();
        manger.notify(TYPE_Normal,notification);
    }

build內(nèi)提供了很多設(shè)置禁添,但是在不同的系統(tǒng)版本顯示有很多差異,使用時(shí)需要注意

  1. setTicker 通知到來時(shí)低版本上會(huì)在系統(tǒng)狀態(tài)欄顯示一小段時(shí)間 5.0以上版本好像沒有用了
  2. setContentInfo和setNumber同時(shí)使用 number會(huì)被隱藏
    setSubText顯示在通知欄的第三行文本桨踪,在低版本上不顯示,比如4.0系統(tǒng)
  3. setVibrate設(shè)置震動(dòng) 參數(shù)是個(gè)long[]{震動(dòng)時(shí)長芹啥,間隔時(shí)長锻离,震動(dòng)時(shí)長,間隔時(shí)長…}單位毫秒 設(shè)置提醒聲音
  4. setSound(Uri sound) 一般默認(rèn)的就好
  5. builder.setLights()設(shè)置呼吸燈的顏色 并不是所有顏色都被支持 個(gè)人感覺沒什么用
  6. 清除通知欄特定通知 manager.cancel(id) id即為manger.notify()的第一個(gè)參數(shù)

二.下載進(jìn)度的通知

Paste_Image.png
 NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.push));
        //禁止用戶點(diǎn)擊刪除按鈕刪除
        builder.setAutoCancel(false);
        //禁止滑動(dòng)刪除
        builder.setOngoing(true);
        //取消右上角的時(shí)間顯示
        builder.setShowWhen(false);
        builder.setContentTitle("下載中..."+progress+"%");
        builder.setProgress(100,progress,false);
        //builder.setContentInfo(progress+"%");
        builder.setOngoing(true);
        builder.setShowWhen(false);
        Intent intent = new Intent(this,DownloadService.class);
        intent.putExtra("command",1);
        Notification notification = builder.build();
        manger.notify(MainActivity.TYPE_Progress,notification);

注意事項(xiàng)

  1. setProgress的第三個(gè)bool類型的參數(shù)表示progressbar的Indeterminate屬性 指是否使用不確定模式
  2. 高版本上progressbar的進(jìn)度值可以在setContentInfo顯示墓怀,但是低版本上使用這個(gè)屬性會(huì)導(dǎo)致progressbar不顯示汽纠,setContentText一樣

三.BigTextStyle通知

點(diǎn)擊后展開可顯示大段文字內(nèi)容的通知

Paste_Image.png
private void bigTextStyle(){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("BigTextStyle");
        builder.setContentText("BigTextStyle演示示例");
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification));
        android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle();
        style.bigText("這里是點(diǎn)擊通知后要顯示的正文,可以換行可以顯示很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長");
        style.setBigContentTitle("點(diǎn)擊后的標(biāo)題");
        //SummaryText沒什么用 可以不設(shè)置
        style.setSummaryText("末尾只一行的文字內(nèi)容");
        builder.setStyle(style);
        builder.setAutoCancel(true);
        Intent intent = new Intent(this,SettingsActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        builder.setContentIntent(pIntent);
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        Notification notification = builder.build();
        manger.notify(TYPE_BigText,notification);
    }```
注意事項(xiàng)
. 使用類 [Android](http://lib.csdn.net/base/15).support.v4.app.NotificationCompat.BigTextStyle
2. 在低版本系統(tǒng)上只顯示點(diǎn)擊前的普通通知樣式 如4.4可以點(diǎn)擊展開傀履,在4.0系統(tǒng)上就不行3. 點(diǎn)擊前后的ContentTitle虱朵、ContentText可以不一致,bigText內(nèi)容可以自動(dòng)換行 好像最多5行的樣子

##四.InboxStyle
與bigTextStyle類似,點(diǎn)擊前顯示普通通知樣式碴犬,點(diǎn)擊后展開

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1851300-e9fbafb9516b6b43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

public void inBoxStyle(){
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("InboxStyle");
builder.setContentText("InboxStyle演示示例");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification));
android.support.v4.app.NotificationCompat.InboxStyle style = new android.support.v4.app.NotificationCompat.InboxStyle();
style.setBigContentTitle("BigContentTitle")
.addLine("第一行絮宁,第一行,第一行服协,第一行绍昂,第一行,第一行偿荷,第一行")
.addLine("第二行")
.addLine("第三行")
.addLine("第四行")
.addLine("第五行")
.setSummaryText("SummaryText");
builder.setStyle(style);
builder.setAutoCancel(true);
Intent intent = new Intent(this,SettingsActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
builder.setContentIntent(pIntent);
builder.setDefaults(NotificationCompat.DEFAULT_ALL);
Notification notification = builder.build();
manger.notify(TYPE_Inbox,notification);
}

注意事項(xiàng)
1. 使用類android.support.v4.app.NotificationCompat.InboxStyle
2. 每行內(nèi)容過長時(shí)并不會(huì)自動(dòng)換行
3. addline可以添加多行 但是多余5行的時(shí)候每行高度會(huì)有截?cái)?. 同BigTextStyle 低版本上系統(tǒng)只能顯示普通樣式

##五.BigPictureStyle
點(diǎn)擊后可以顯示一個(gè)大圖的通知

public void bigPictureStyle(){
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("BigPictureStyle");
builder.setContentText("BigPicture演示示例");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setDefaults(NotificationCompat.DEFAULT_ALL);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification));
android.support.v4.app.NotificationCompat.BigPictureStyle style = new android.support.v4.app.NotificationCompat.BigPictureStyle();
style.setBigContentTitle("BigContentTitle");
style.setSummaryText("SummaryText");
style.bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.small));
builder.setStyle(style);
builder.setAutoCancel(true);
Intent intent = new Intent(this,ImageActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
//設(shè)置點(diǎn)擊大圖后跳轉(zhuǎn)
builder.setContentIntent(pIntent);
Notification notification = builder.build();
manger.notify(TYPE_BigPicture,notification);
}```
注意事項(xiàng)

  1. 使用類android.support.v4.app.NotificationCompat.BigPictureStyle
  2. style.bigPicture傳遞的是個(gè)bitmap對象 所以也不應(yīng)該傳過大的圖 否則會(huì)oom
  3. 同BigTextStyle 低版本上系統(tǒng)只能顯示普通樣式

六.hangup橫幅通知

類似于手機(jī)QQ消息的通知窘游,不顯示在通知欄而是以橫幅的模式顯示在其他應(yīng)用上方

Paste_Image.png
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("橫幅通知");
        builder.setContentText("請?jiān)谠O(shè)置通知管理中開啟消息橫幅提醒權(quán)限");
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification));
        Intent intent = new Intent(this,ImageActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        builder.setContentIntent(pIntent);
        //這句是重點(diǎn)
        builder.setFullScreenIntent(pIntent,true);
        builder.setAutoCancel(true);
        Notification notification = builder.build();
        manger.notify(TYPE_Hangup,notification);

注意事項(xiàng)

  1. 此種效果只在5.0以上系統(tǒng)中有效
  2. mainfest中需要添加<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  3. 可能還需要在設(shè)置開啟橫幅通知權(quán)限(在設(shè)置通知管理中)4. 在部分改版rom上可能會(huì)直接彈出應(yīng)用而不是顯示橫幅

七.MediaStyle

主要是用來關(guān)聯(lián)音頻播放服務(wù)的,點(diǎn)擊后不會(huì)自動(dòng)消失,通知欄的清空也不可用

Paste_Image.png
private void mediaStyle(){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("MediaStyle");
        builder.setContentText("Song Title");
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notification));
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        Intent intent = new Intent(this,ImageActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        builder.setContentIntent(pIntent);
        //第一個(gè)參數(shù)是圖標(biāo)資源id 第二個(gè)是圖標(biāo)顯示的名稱跳纳,第三個(gè)圖標(biāo)點(diǎn)擊要啟動(dòng)的PendingIntent
        builder.addAction(R.drawable.ic_previous_white,"",null);
        builder.addAction(R.drawable.ic_stop_white,"",null);
        builder.addAction(R.drawable.ic_play_arrow_white_18dp,"",pIntent);
        builder.addAction(R.drawable.ic_next_white,"",null);
        NotificationCompat.MediaStyle style = new NotificationCompat.MediaStyle();
        style.setMediaSession(new MediaSessionCompat(this,"MediaSession",
                new ComponentName(MainActivity.this,Intent.ACTION_MEDIA_BUTTON),null).getSessionToken());
        //CancelButton在5.0以下的機(jī)器有效
        style.setCancelButtonIntent(pIntent);
        style.setShowCancelButton(true);
        //設(shè)置要現(xiàn)實(shí)在通知右方的圖標(biāo) 最多三個(gè)
        style.setShowActionsInCompactView(2,3);
        builder.setStyle(style);
        builder.setShowWhen(false);
        Notification notification = builder.build();
        manger.notify(TYPE_Media,notification);
    }

注意事項(xiàng)

  1. 使用類v7包下的NotificationCompat.MediaStyle
  2. addAction方法并普通樣式也可以用忍饰,使用后普通通知可以點(diǎn)擊展開,展開部分會(huì)顯示一排添加的圖標(biāo)寺庄,并且可以給每個(gè)圖標(biāo)設(shè)置不同的點(diǎn)擊事件
  3. 最多可以添加5哥action 并排顯示在點(diǎn)擊展開的部分
  4. setShowActionsInCompactView的參數(shù)是添加的action在所有action組成的數(shù)組中的下標(biāo)喘批,從0開始
  5. setShowActionsInCompactView設(shè)置的action會(huì)顯示在點(diǎn)擊前的通知的右側(cè),低版本上也可以顯示
  6. setShowCancelButton(true)會(huì)在通知的右上部分顯示一個(gè)刪除圖標(biāo) 5.0以下有效

八.自定義通知欄布局

其實(shí)就是設(shè)置一個(gè)romateViews

Paste_Image.png
   //command是自定義用來區(qū)分各種點(diǎn)擊事件的
    private void sendCustomerNotification(int command){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("Notification");
        builder.setContentText("自定義通知欄示例");
        builder.setSmallIcon(R.mipmap.ic_launcher);
        //builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.push));
        builder.setAutoCancel(false);
        builder.setOngoing(true);
        builder.setShowWhen(false);
        RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.notification_template_customer);
        remoteViews.setTextViewText(R.id.title,"Notification");
        remoteViews.setTextViewText(R.id.text,"song"+index);
        if(command==CommandNext){
            remoteViews.setImageViewResource(R.id.btn1,R.drawable.ic_pause_white);
        }else if(command==CommandPlay){
            if(playerStatus==StatusStop){
                remoteViews.setImageViewResource(R.id.btn1,R.drawable.ic_pause_white);
            }else{
                remoteViews.setImageViewResource(R.id.btn1,R.drawable.ic_play_arrow_white_18dp);
            }
        }
        Intent Intent1 = new Intent(this,MediaService.class);
        Intent1.putExtra("command",CommandPlay);
        //getService(Context context, int requestCode, @NonNull Intent intent, @Flags int flags)
        //不同控件的requestCode需要區(qū)分開 getActivity broadcoast同理
        PendingIntent PIntent1 =  PendingIntent.getService(this,5,Intent1,0);
        remoteViews.setOnClickPendingIntent(R.id.btn1,PIntent1);

        Intent Intent2 = new Intent(this,MediaService.class);
        Intent2.putExtra("command",CommandNext);
        PendingIntent PIntent2 =  PendingIntent.getService(this,6,Intent2,0);
        remoteViews.setOnClickPendingIntent(R.id.btn2,PIntent2);

        Intent Intent3 = new Intent(this,MediaService.class);
        Intent3.putExtra("command",CommandClose);
        PendingIntent PIntent3 =  PendingIntent.getService(this,7,Intent3,0);
        remoteViews.setOnClickPendingIntent(R.id.btn3,PIntent3);

        builder.setContent(remoteViews);
        Notification notification = builder.build();
        manger.notify(MainActivity.TYPE_Customer,notification);
    }  

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/status_bar_latest_event_content"
    android:layout_width="match_parent"
    android:layout_height="64dp" android:gravity="center_vertical"
    android:orientation="horizontal">
    <ImageView android:id="@+id/icon"
        android:layout_width="64dp"
        android:layout_height="50dp"
        android:scaleType="fitCenter"
        android:src="@drawable/push"/>
    <LinearLayout android:orientation="vertical"
        android:paddingRight="8dp"
        android:paddingEnd="8dp"
        android:paddingTop="2dp"
        android:paddingBottom="2dp"
        android:layout_width="0dp" android:layout_weight="1"
        android:layout_height="wrap_content">

        <TextView android:id="@+id/title"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:layout_marginLeft="2dp"
            android:layout_marginStart="2dp"
            android:paddingTop="6dp"
            android:paddingBottom="6dp"
            android:ellipsize="marquee"
            android:fadingEdge="horizontal"
            android:layout_weight="1"
            android:text="Title"/>

        <TextView android:id="@+id/text"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_marginStart="2dp"
            android:singleLine="true"
            android:text="Content"
            android:ellipsize="marquee"
            android:fadingEdge="horizontal"
            />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/media_actions"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical|end"
        android:orientation="horizontal"
        android:layoutDirection="ltr"
        >
        <ImageButton
            style="?android:attr/borderlessButtonStyle"
            android:id="@+id/btn1"
            android:layout_width="48dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:src="@drawable/ic_play_arrow_white_18dp"
            android:gravity="center"
            />
        <ImageButton
            style="?android:attr/borderlessButtonStyle"
            android:id="@+id/btn2"
            android:layout_width="48dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:src="@drawable/ic_next_white"
            android:gravity="center"
            />
        <ImageButton
            style="?android:attr/borderlessButtonStyle"
            android:id="@+id/btn3"
            android:layout_width="48dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:src="@drawable/abc_ic_clear_mtrl_alpha"
            android:gravity="center"
            />
    </LinearLayout>

    <ImageView android:id="@+id/end_padder"
        android:layout_width="6dp"
        android:layout_height="match_parent"
        />
</LinearLayout>

注意事項(xiàng)

  1. 不同控件 PendingIntent.getXXX的requestCode不能相同2. RemoteViews的具體用法請自行百度 這里就不展開說明了3. 自定義布局的高需要是64dp 沒有為什么 官方給的
  2. 需要更改通知欄布局的時(shí)候 其實(shí)就是以同一個(gè)NotifyId發(fā)個(gè)新的通知 替換掉老的
  3. LargeIcon可以不設(shè)置铣揉,但是smallIcon和title需要設(shè)置饶深,不然通知不能顯示
  4. LargeIcon如果設(shè)置了并且自定義布局內(nèi)相同位置還有一個(gè)icon的畫在低版本系統(tǒng)上可能會(huì)都顯示,高版本不會(huì)顯示LargeIcon

九.仿 QQ 音樂的 Notification

有人想要仿 QQ 音樂的樣式逛拱,其實(shí)代碼很簡單和自定義的差不多敌厘。

Paste_Image.png
 if(Build.VERSION.SDK_INT>=16){
        Notification notification = new Notification();
        notification.icon = R.mipmap.ic_launcher;
        notification.tickerText = "BigContent";
        notification.contentView = new RemoteViews(getPackageName(), R.layout.notification_template_customer);
        RemoteViews expandedView = new RemoteViews(getPackageName(), R.layout.notification_big_content);
        //contentView和expandedView的 pendingIntent 我就不寫了 和自定義的一樣的
        notification.bigContentView = expandedView;
        manger.notify(10,notification);
    }else{
        Toast.makeText(MainActivity.this, "系統(tǒng)版本過低,不支持此種樣式朽合!", Toast.LENGTH_SHORT).show();
    }

R.layout.notification_big_content的布局文件也很簡單就不上代碼了
需要注意的是
bigContentView是 api16以上才支持的俱两,所以4.1以下還是沒有效果的另外bigContentView布局的高度需要是100dp。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曹步,一起剝皮案震驚了整個(gè)濱河市宪彩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讲婚,老刑警劉巖尿孔,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筹麸,居然都是意外死亡活合,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門物赶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來白指,“玉大人,你說我怎么就攤上這事酵紫「娉埃” “怎么了错维?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長橄唬。 經(jīng)常有香客問我赋焕,道長,這世上最難降的妖魔是什么轧坎? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任宏邮,我火速辦了婚禮,結(jié)果婚禮上缸血,老公的妹妹穿的比我還像新娘蜜氨。我一直安慰自己,他們只是感情好捎泻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布飒炎。 她就那樣靜靜地躺著,像睡著了一般笆豁。 火紅的嫁衣襯著肌膚如雪郎汪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天闯狱,我揣著相機(jī)與錄音煞赢,去河邊找鬼。 笑死哄孤,一個(gè)胖子當(dāng)著我的面吹牛照筑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘦陈,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼凝危,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晨逝?” 一聲冷哼從身側(cè)響起蛾默,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捉貌,沒想到半個(gè)月后支鸡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昏翰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年苍匆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚菊。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叔汁,靈堂內(nèi)的尸體忽然破棺而出统求,到底是詐尸還是另有隱情检碗,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布码邻,位于F島的核電站折剃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏像屋。R本人自食惡果不足惜怕犁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望己莺。 院中可真熱鬧奏甫,春花似錦、人聲如沸凌受。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胜蛉。三九已至挠进,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間誊册,已是汗流浹背领突。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留案怯,地道東北人君旦。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像殴泰,于是被迫代替她去往敵國和親于宙。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 原文出處: http://www.androidchina.net/6174.html Notification在...
    木木00閱讀 12,290評(píng)論 3 32
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案悍汛? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,498評(píng)論 25 707
  • I can see nothing but you Still remember clearly What I e...
    skye26閱讀 146評(píng)論 0 0
  • 這是一場關(guān)于先做作業(yè)還是先玩离咐,要不要到點(diǎn)睡覺的權(quán)利之爭谱俭,過程艱苦,結(jié)局也不見得圓滿宵蛀,需要反思昆著。 Amy&Lulu的...
    chunyan閱讀 340評(píng)論 0 0