Android沉浸式适配-三星S8动态设置导航栏
2017-06-30 本文已影响1177人
332ad49fb8f6
由于自己手上用的手机是三星s8,作为一个开发者,看见自己app不适配自己手机,肯定是很难受的,所以有了这段代码
如何判断S8是否隐藏导航栏
以下是我从手机上抓到的系统log
06-30 17:21:54.554 2767-2767/? D/NavBarSettingsHelper: content://settings/global/navigationbar_hide_bar_enabled changed
06-30 17:21:54.554 2767-2767/? D/NavBarSettingsHelper: onChange()
06-30 17:21:54.554 2767-2767/? D/NavBarSettingsHelper: mKey=navigationbar_hide_bar_enabled, mIntValue=0, mStringValue=null
06-30 17:21:54.554 2767-2767/? V/NavBarSettingsHelper: *** broadcastChange for content://settings/global/navigationbar_hide_bar_enabled
06-30 17:21:54.554 2767-2767/? V/NavBarSettingsHelper: *** broadcastChange tempList.size() = 1
看到这里,一些有经验的朋友已经知道了来龙去脉了
下面贴上判断是否隐藏导航栏代码
try {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
int enable = Settings.Global.getInt(activity.getContentResolver() , "navigationbar_hide_bar_enabled");
}
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
这里的enable变量,1则表示隐藏
如何监听S8导航栏
private class BarHideEnableObserver extends ContentObserver {
BarHideEnableObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
//实现你自己的逻辑
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
mBarHideEnableObserver = new BarHideEnableObserver(new Handler());
getContentResolver().registerContentObserver(Settings.Global.getUriFor("navigationbar_hide_bar_enabled"), true, mBarHideEnableObserver);
}
记得在不需要的时候unregisterContentObserver
@Override
protected void onDestroy() {
getContentResolver().unregisterContentObserver(mBarHideEnableObserver);
super.onDestroy();
}