Android實(shí)現(xiàn)手機(jī)游戲隱藏虛擬按鍵
手機(jī)游戲?qū)崿F(xiàn)Android隱藏虛擬按鍵,供大家參考,具體內(nèi)容如下
在華為等型號(hào)的手機(jī)會(huì)有虛擬按鍵,在進(jìn)入游戲的時(shí)候,需要全屏隱藏這個(gè)按鍵,并在下拉狀態(tài)欄的時(shí)候,會(huì)重新呼出虛擬按鍵。
游戲的加載過程中,初始化檢查更新,然后進(jìn)入到游戲畫面,實(shí)際上是android的2個(gè)view的切換。
其中MainActivity中,在onCreate()方法中添加如下函數(shù)并且復(fù)寫一個(gè)方法就可以了。
@Override
protected void onCreate(Bundle icicle) {
hideNavigationBar();
}
// 隱藏虛擬按鍵
public void hideNavigationBar()
{
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN; // hide status bar
if( android.os.Build.VERSION.SDK_INT >= 19 ){
uiFlags |= 0x00001000; //SYSTEM_UI_FLAG_IMMERSIVE_STICKY: hide navigation bars - compatibility: building API level is lower thatn 19, use magic number directly for higher API target level
} else {
uiFlags |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if( hasFocus ) {
hideNavigationBar();
}
}
另外,在切換到GameView之后,發(fā)現(xiàn)隱藏是隱藏了,但是虛擬按鍵那一條是灰色的,游戲的渲染區(qū)域并不包含哪塊區(qū)域,所以覺得是渲染區(qū)域大小在隱藏了虛擬按鍵之后,這個(gè)大小并沒有正確,應(yīng)該取得的時(shí)候屏幕真正的分辨率。
下面的方法是獲取屏幕真正的分辨率,然后渲染區(qū)域是全屏,這樣就可以全屏顯示了。
private Point getDisplay(MainActivity context)
{
DisplayMetrics metrics = new DisplayMetrics();
Display display = context.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
DisplayMetrics dm = new DisplayMetrics();
@SuppressWarnings("rawtypes")
Class c;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, dm);
return new Point(dm.widthPixels, dm.heightPixels);
} catch (Exception e) {
return new Point(dm.widthPixels, dm.heightPixels);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android百度地圖應(yīng)用之基本地圖功能實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用之基本地圖功能實(shí)現(xiàn)的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-06-06
Flutter路由守衛(wèi)攔截的實(shí)現(xiàn)
路由守衛(wèi)攔截最常見的應(yīng)用場(chǎng)景就是對(duì)用戶數(shù)據(jù)權(quán)限的校驗(yàn),本文主要介紹了Flutter路由守衛(wèi)攔截的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Android開發(fā)實(shí)現(xiàn)在TextView前面加標(biāo)簽示例
這篇文章主要為大家介紹了Android開發(fā)實(shí)現(xiàn)TextView前面加標(biāo)簽示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Android接收和發(fā)送短信的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android接收和發(fā)送短信的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-08-08
Android webview手動(dòng)校驗(yàn)https證書(by 星空武哥)
有些時(shí)候由于Android系統(tǒng)的bug或者其他的原因,導(dǎo)致我們的webview不能驗(yàn)證通過我們的https證書,最明顯的例子就是華為手機(jī)mate7升級(jí)到Android7.0后,手機(jī)有些網(wǎng)站打不開了,而更新了webview的補(bǔ)丁后就沒問題了2017-09-09
Android應(yīng)用中使用ListView來分頁顯示刷新的內(nèi)容
這篇文章主要介紹了Android應(yīng)用中使用ListView來分頁顯示刷新的內(nèi)容的方法,展示了一個(gè)點(diǎn)擊按鈕進(jìn)行刷新的實(shí)例以及下拉刷新分頁顯示的要點(diǎn)解析,需要的朋友可以參考下2016-04-04
Android Cocos Creator游戲開發(fā)平臺(tái)打包優(yōu)化實(shí)現(xiàn)方案
Cocos Creator是一款輕量、高效、免費(fèi)開源的跨平臺(tái)游戲引擎,同時(shí)也是實(shí)時(shí)3D內(nèi)容創(chuàng)作平臺(tái),不僅支持2D、3D的游戲開發(fā),同時(shí)在HMI、IoT、XR、虛擬人偶等領(lǐng)域,均可提供一套完善的行業(yè)解決方案2022-11-11
Android 檢測(cè)鍵盤顯示或隱藏鍵盤的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 檢測(cè)鍵盤顯示或隱藏鍵盤的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-07-07

