如何解決Android虛擬按鍵_類似華為的虛擬鍵
阿新 • • 發佈:2018-12-11
我們在開發Android 的時候,尤其是適配,是真心覺得Android 頭大,①各種狀態列,②小米的懸浮框許可權會導致系統級別的WindowManager載入的view 不顯示,尤其是Mi 5,Mi 6,③華為的虛擬按鍵,④魅族手機使用Videovie控制元件,會在魅族手機底部產黑條 ⑤ 華為手機插入USB 資料線通訊的時候,點選彈窗 是,則導致 不能正常通訊,必須點選否 採用Google 的AOA 協議 才可以避免彈窗提示!
看看,每個學Android 的人 都是天使,和IOS 那適配比起來,IOS 省了好多 機型適配的問題。
進入正題!
1.狀態列的問題就很好解決,如果為了到達全屏!
首先去掉狀態列
<activity android:name="com.gdu.mvp_view.ZorroRealControlActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<style name="Theme.NoTitleBar.Fullscreen">
<item name="windowFullscreen">true</item>
<item name="windowContentOverlay">@null</item>
</style>
就可以去掉了!
2.解決下方的虛擬按鍵NavigationBar
①首先判斷是否有虛擬按鈕
/** * <P>shang</P> * <P>判斷是否有虛擬按鍵</P> * @param context * @return */ public static boolean checkDeviceHasNavigationBar(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { } return hasNavigationBar; }
②就是開始去掉虛擬按鍵
@Override
protected void onResume() {
//解決 虛擬按鍵問題
solveNavigationBar(getWindow());
}
/**
* <P>shang</P>
* <P>解決虛擬按鍵問題</P>
* @param window
*/
public void solveNavigationBar(Window window){
//保持佈局狀態
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
//佈局位於狀態列下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN|
//隱藏導航欄
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
if (Build.VERSION.SDK_INT>=19){
uiOptions |= 0x00001000;
}else{
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
window.getDecorView().setSystemUiVisibility(uiOptions);
}
實測有效!如上圖Gif,達到王者榮耀 遊戲介面效果!