編輯:關於android開發
Notification是在你的應用常規界面之外展示的消息。當app讓系統發送一個消息的時候,消息首先以圖表的形式顯示在通知欄。要查看消息的詳情需要進入通知抽屜(notificationdrawer)中查看。(notificationdrawer)都是系統層面控制的,你可以隨時查看,不限制於app。
Notification的設計:
作為android UI中很重要的組成部分,notification擁有專屬於自己的設計准則。
Notification的界面元素在通知抽屜中的notification有兩種顯示方式,取決於你的android版本以及notificationdrawer的狀態。
Notification的兩種顯示方式:
(1)普通視圖
這種風格是notification drawer的標准顯示方式。
(2)寬視圖
指你的notification被展開的時候會顯示更大的視圖,這種風格是android4.1之後才有的新特性。
下面我們詳細介紹普通視圖的實現:
在圖通視圖中,notification最高64dp,即使你創建了一個寬視圖風格的notification,在未展開的情況下也是以普通大小顯示出來。下面是一個普通的notification。
藍色指示框所代表的的意思如下:
1.標題
2.大圖標
3.通知內容
4.通知數據
5.小圖標
6.Notification的發布時間。
可以通過調用setWhen()設置一個明確的時間,
默認是系統收到該notification的時間。
本次在普通視圖的基礎上添加了點擊頁面跳轉的效果,可以理解為添加Notification的動作與行為:
雖然這也是可選的,但是你還是應該為你的notification至少添加一種行為:允許用戶通過點擊notification進入一個activity中進行更多的查看或者後續操作。一個notification可以提供多種動作,而且你也應該讓用戶點擊一個notification之後能總是有相應的響應動作,通常是打開一個activity。你還可以在notification中添加能響應點擊事件的button,比如延遲一下鬧鐘,或者立即回復一條短消息。
在notification內部,一個動作本身是被定義在一個PendingIntent中,PendingIntent包含了一個用於啟動你app中activity的intent。要將PendingIntent和一個手勢聯系起來,你需要調用合適的NotificationCompat.Builder方法。
比如你想在點擊notification文字的時候啟動activity,你需要調用NotificationCompat.Builder的setContentIntent()來添加PendingIntent。啟動一個activity是notification動作響應中最普遍的一類。
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/activity_main" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 tools:context="com.example.administrator.day12.MainActivity"> 9 <Button 10 android:text="顯示通知" 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:id="@+id/button" 14 android:onClick="show1" /> 15 </LinearLayout>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_content" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="com.example.administrator.day12.ContentActivity"> 8 <TextView 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" 11 android:gravity="center" 12 android:textSize="30sp" 13 android:text="十勝十敗" /> 14 </LinearLayout>
1 import android.app.Notification; 2 import android.app.NotificationManager; 3 import android.app.PendingIntent; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.graphics.BitmapFactory; 7 import android.support.v7.app.AppCompatActivity; 8 import android.os.Bundle; 9 import android.support.v7.app.NotificationCompat; 10 import android.view.View; 11 import android.widget.RemoteViews; 12 public class MainActivity extends AppCompatActivity { 13 private static final int NO_1 =0x1 ; 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 } 19 public void show1(View v){ 20 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 21 builder.setSmallIcon(R.mipmap.guojia); 22 builder.setContentTitle("郭嘉"); 23 builder.setContentText("我們打袁紹吧"); 24 //設置Notification.Default_ALL(默認啟用全部服務(呼吸燈,鈴聲等) 25 builder.setDefaults(Notification.DEFAULT_ALL); 26 //調用NotificationCompat.Builder的setContentIntent()來添加PendingIntent 27 Intent intent = new Intent(this, ContentActivity.class); 28 intent.putExtra("info", "郭嘉給你發了一個計策!"); 29 PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 30 builder.setContentIntent(pi); 31 //獲取Notification 32 Notification n = builder.build(); 33 //通過NotificationCompat.Builder.build()來獲得notification對象自己 34 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 35 //然後調用NotificationManager.notify()向系統轉交 36 manager.notify(NO_1, n); 37 } 38 }
1 public class ContentActivity extends AppCompatActivity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.activity_content); 6 //通過獲取MainActivity中設置的putExtra獲取土司內容 7 Toast.makeText(this, getIntent().getStringExtra("info"), Toast.LENGTH_SHORT).show(); 8 } 9 }
演示效果的代碼就這些,我們梳理下本次實現的思路:
(1)通過按鈕觸發點擊事件
(2)將notification的一些UI信息以及相關動作賦予NotificationCompat.Builder對象,然後通過NotificationCompat.Builder.build()來獲得notification對象自己;然後調用NotificationManager.notify()向系統轉交這個通知。
(3)在第二步中通過Builder的setContentIntent()來添加PendingIntent,為Notification添加行為,也就是Activity的跳轉
(4)對打開的Activity設置表現的效果。
LeanCloud使用入門(android),leancloudandroidLeanCloud算是一個簡單易用的雲服務器,其中包含了強大的數據庫支持,我們只需要將此服務
tomcat+java的web程序持續占cpu問題調試現象:在tomcat中部署Java的web應用程序,過一段時間後出現tomcat的java進程持續占用cpu高達10
(轉)漢字轉拼音HanziToPinyin,拼音hanzitopinyin本文轉載於:http://blog.csdn.net/zhangphil/article/det
Android反編譯和二次打包實戰 作為Android開發者,工作中少不了要反編譯別人的apk,當然主要目的還是為了學習到更多,取彼之長,補己之短。今天就來總結一下A