A. android 6.0通知欄下拉動畫緩慢的問題
最近在蔽鋒開發中想要實現一個下拉通知欄的功能,但是在6.0上使用方法下拉,展開動畫十分緩慢,剛好在Nova launcher中,也實現了下拉通知欄,而且在6.0上提示說獲塌數取root許可權,變通的解決這個問題,在酷安開發者群有朋友提到說可以在獲取root許可權後使用shell模擬觸摸事件來實現這個方法,測試以後發現確實可行。
調用如下指團並首令模擬手勢實現下拉:
adb shell input swipe 100 1 100 500 300 模擬滑動事件 在x 100 y 1的位置滑動到 x 100 y 500的位置 歷時300毫秒
此時通知欄並不會完全展開,解決方法也非常簡單,再模擬一次點擊事件,點擊剛剛沒有完全展開的狀態欄即可:
adb shell input tap 100 100 模擬點擊事件,點擊了一下x 100 y 100的位置
這樣通知欄就完全展開了
B. oppo怎麼關閉android系統通知欄
通知管理可以管理所有應用的通知許可權,您可以自行選擇各應用通知的展開方式。
1、前往設置 > 通知與狀態欄 > 通知管理。
2、選擇應用 > 開啟或關閉允許通知,還可以在這敬手裡選擇來凳稿亂通知時在桌面圖標上顯示數字角標、圓點角標或無角標。
開啟應用的通知許可權後,應用的常規推送會集中展示在通知中心。
在解鎖後的任意屏幕下,從屏幕頂部向下輕掃,即可看到通知中心的消棗檔息。
若通知中心裡有您不感興趣的消息,您可以通過以下兩種方式刪除通知:1、向左/向右滑動單個通知,出現刪除圖標後,點擊刪除圖標進行刪除,或繼續向左滑動直接刪除。
2、點擊通知中心右下角全部清除,將通知一次性全部刪除。
本回答適用於OPPO所有機型。
C. Android通知欄前台服務
最常見的表現形式就是 音樂播放服務 ,應用程序後台運行時,用戶可以通過通知欄,知道當前播放內容,並進行暫停、繼續、切歌等相關操作。
以上就是前台服務的創建過程,念大相關注釋已經很明白了,具體使用可以查看文末的Demo。
服務創建完畢,接下來就可以進行服務的啟動了,啟動前不要忘記在清單文件中進行前台服務許可權的添加:
關於 前台服務 的介紹及使用就到這里了,相關使用已上傳至 Github開發記錄 ,歡迎點擊查閱及Star,我也會繼續補充其它有用的知識及例子在項目上。
用前台服務相比後台服務更不慶高源容易被系統殺死,可以起到比較長久的駐留。
在開發過程中,發現前台服務藍牙掃描會被阻。系統提示start scan is blocked。這個是系統阻止了藍牙設備的運行,只能在設置上放行。比如小米:設置->電譽態量和性能->應用配置-> 應用APP
D. Android通知欄詳解
可以看到,Android通知欄默認是標題顯示一行,內容顯示一行,對於一行顯示不完的,用省略號代替。
這是常見的通知欄的樣式,不再贅述。
在不同的手機上,只設置builder.setSmallIcon(R.drawable.ic_launcher)表現可能不一致,在華為P9上不會顯示大的icon,只會顯示小的icon。但是在魅族上卻顯示了,顯示的應該是應用的默認圖標。
所以建議還是設置
與上面的顯示多行文本類似,也是在Android4.1中官方推出的Notification.BigPictureStyle。
使用方式也相同
是因為在用戶還沒有劃出通知欄的時候需要提醒用戶收到通知,所以需要顯示smallIcon。
E. android通知欄高度可以修改么
可以,修改 Android 狀態欄高度:
配置文件:frameworks/base/core/res/res/values/dimens.xml
修改條目:
<resources>
<!-- The width that is used when creating thumbnails of applications. -->
<dimen name="thumbnail_width">0dp</dimen>
<!-- The height that is used when creating thumbnails of applications. -->
<dimen name="thumbnail_height">0dp</dimen>
<!-- The standard size (both width and height) of an application icon that
will be displayed in the app launcher and elsewhere. -->
<dimen name="app_icon_size">48dip</dimen>
<dimen name="toast_y_offset">64dip</dimen>
<!-- Height of the status bar -->
<dimen name="status_bar_height">38dip</dimen>
<!-- Height of the status bar -->
<dimen name="status_bar_icon_size">38dip</dimen>
<!-- Margin at the edge of the screen to ignore touch events for in the windowshade. -->
<dimen name="status_bar_edge_ignore">5dp</dimen>
<!-- Size of the fastscroll hint letter -->
<dimen name="fastscroll_overlay_size">104dp</dimen>
<!-- Width of the fastscroll thumb -->
<dimen name="fastscroll_thumb_width">64dp</dimen>
<!-- Height of the fastscroll thumb -->
<dimen name="fastscroll_thumb_height">52dp</dimen>
<!-- Default height of a key in the password keyboard -->
<dimen name="password_keyboard_key_height">56dip</dimen>
<!-- Default correction for the space key in the password keyboard -->
<dimen name="password_keyboard_spacebar_vertical_correction">4dip</dimen>
</resources>
F. [Android]展開/收起通知欄
需要許可權:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
收起通知欄(經測能用)
展開通知欄(未測試)
轉自文章: 折疊與展開通知欄方法
G. Android 下拉通知欄時Activity的生命周期——重新理解onPause()
在某個APP中,發現下拉通知欄的時候,正在播放的視頻會暫停,於是有點好奇這段操作是不是在生命周期中實現的。在網上眾多關於Activity生命周期的討論中,很多人認為 onPause() 和 onStop() 的區別就是「部分遮擋」和「全部遮擋」,那按照這個猜測來分析一下這個過程:
首先,通知欄下拉一點點,符合一般描述中「Activity被部分遮擋」—— onPause()
然後,通知欄完全落下之後,「Activity被全部遮擋」—— onStop()
於是自己寫了一個實例來驗證:
啟動APP時,毫無疑問,調用了 onCreate() → onStart() → onResume() ;
完全下拉通知欄,然後上拉通知欄,發現沒有日誌列印,說明 下拉通知欄對Activity的生命周期沒有影響 。
經過測試不難發現,在Activity中彈出AlertDialog、Toast時,Activity的 onPause() 並沒有調用;筆者還嘗試在MIUI系統中喚醒小愛同學,發現 onPause() 仍然沒有被調用。
但是在以下特殊的情況下, onPause() 會被調用:
跑去看文檔發現了如下信息:
發現了 onPause() 和Activity的奇妙聯系,就不難理解之前為什麼沒有被調用的問題了。
查看AlertDialog和Toast的源碼,可以發現它們顯示的原理,都是通過 WindowManager.addView() 來顯示的。也就是說,AlertDialog和Toast可以看做是當前Activity的一部分View,當然也不會對Activity的生命周期構成影響。
因此, onPause() 是否調用的關鍵就是,是否有另一個Activity參與進來了。
而網上流傳甚廣的 onPause() 和 onStop() 調用中提到的「遮擋」,應該修正為 「被Activity遮擋」
至於官方文檔中提到的, onPause() 之後會調用 onStop() 或者 onResume() ,前者很好理解,一般的退出、新啟動一個全屏Activity、鎖屏、返回HOME等操作都是這種情況;至於後者,筆者能想到的情況就是,彈出部分遮擋的Activity類型的對話框,然後按返回鍵。
H. android 怎麼讓通知欄點擊後不消失 但可以被按鈕清除
android 讓通知欄點擊後不消失 但可以被按鈕清除,可以這樣做:
APP發送通知時,通知需要添加flag:
Notification notification;
notification.flags |= Notification.FLAG_ONGOING_EVENT;
或者
notification.flags |= Notification.FLAG_NO_CLEAR;
PendingIntent.FLAG_CANCEL_CURRENT;
PendingIntent.FLAG_NO_CREATE;
PendingIntent.FLAG_ONE_SHOT;
PendingIntent.FLAG_UPDATE_CURRENT;
參考資料:http://blog.csdn.net/hknock/article/details/8465410
I. android 自定義通知欄
Notification 參數使用 參考:
http://www.cnblogs.com/kexing/p/8371051.html
自定義通知欄
僅支持FrameLayout、LinearLayout、RelativeLayout三種布局控制項
AnalogClock、Chronometer、Button、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView和AdapterViewFlipper這些顯示控制項
否則會引起ClassNotFoundException異常。
流程:點擊通知欄 發送廣播 app接收廣播做相應處理:
為通知欄綁定廣播事件:
1.FLAG_CANCEL_CURRENT:如果AlarmManager管理的PendingIntent已經存在,那麼將會取消當前的PendingIntent,從而創建一個新的PendingIntent.
2.FLAG_UPDATE_CURRENT:如果AlarmManager管理的PendingIntent已經存在,讓新的Intent更新之前Intent對象數據,例如更新Intent中的Extras,另外,我們也可以在PendingIntent的原進程中調用PendingIntent的cancel ()把其從系統中移除掉
3.FLAG_NO_CREATE:如果AlarmManager管理的PendingIntent已經存在,那麼將不進行任何操作,直接返回已經.
4.FLAG_ONE_SHOT:該PendingIntent只作用一次.在該PendingIntent對象通過send()方法觸發過後,PendingIntent將自動調用cancel()進行銷毀,那麼如果你再調用send()方法的話,系統將會返回一個SendIntentException.
添加廣播接收:
AndroidManifest: