use kitkats new SYSTEM_UI_FLAG_IMMERSIVE on navbar hide (thx Simeon Mac)

This commit is contained in:
Philipp Schaefer 2013-12-07 21:29:08 +01:00
parent 3e00645f4a
commit 04d521f71c
2 changed files with 16 additions and 6 deletions

View File

@ -71,7 +71,15 @@ public class IITC_WebView extends WebView {
@Override @Override
public void run() { public void run() {
if (isInFullscreen() && (getFullscreenStatus() & (FS_NAVBAR)) != 0) { if (isInFullscreen() && (getFullscreenStatus() & (FS_NAVBAR)) != 0) {
setSystemUiVisibility(SYSTEM_UI_FLAG_HIDE_NAVIGATION); int systemUiVisibility = SYSTEM_UI_FLAG_HIDE_NAVIGATION;
// in immersive mode the user can interact with the app while the navbar is hidden
// this mode is available since KitKat
// you can leave this mode by swiping down from the top of the screen. this does only work
// when the app is in total-fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && (mFullscreenStatus & FS_SYSBAR) != 0) {
systemUiVisibility |= SYSTEM_UI_FLAG_IMMERSIVE;
}
setSystemUiVisibility(systemUiVisibility);
} }
} }
}; };
@ -185,20 +193,22 @@ public class IITC_WebView extends WebView {
@Override @Override
public boolean onTouchEvent(MotionEvent event) { public boolean onTouchEvent(MotionEvent event) {
getHandler().removeCallbacks(mNavHider); getHandler().removeCallbacks(mNavHider);
getHandler().postDelayed(mNavHider, 2000); getHandler().postDelayed(mNavHider, 3000);
return super.onTouchEvent(event); return super.onTouchEvent(event);
} }
@Override @Override
public void setSystemUiVisibility(int visibility) { public void setSystemUiVisibility(int visibility) {
getHandler().postDelayed(mNavHider, 2000); if ((visibility & SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
getHandler().postDelayed(mNavHider, 3000);
}
super.setSystemUiVisibility(visibility); super.setSystemUiVisibility(visibility);
} }
@Override @Override
public void onWindowFocusChanged(boolean hasWindowFocus) { public void onWindowFocusChanged(boolean hasWindowFocus) {
if (hasWindowFocus) { if (hasWindowFocus) {
getHandler().postDelayed(mNavHider, 2000); getHandler().postDelayed(mNavHider, 3000);
} else { } else {
getHandler().removeCallbacks(mNavHider); getHandler().removeCallbacks(mNavHider);
} }
@ -220,7 +230,7 @@ public class IITC_WebView extends WebView {
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
} }
if ((mFullscreenStatus & FS_NAVBAR) != 0) { if ((mFullscreenStatus & FS_NAVBAR) != 0) {
setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); getHandler().post(mNavHider);
} }
if ((mFullscreenStatus & FS_STATUSBAR) != 0) { if ((mFullscreenStatus & FS_STATUSBAR) != 0) {
loadUrl("javascript: $('#updatestatus').hide();"); loadUrl("javascript: $('#updatestatus').hide();");

View File

@ -39,7 +39,7 @@ public class IntentListView extends ListView {
private class IntentAdapter extends ArrayAdapter<ResolveInfo> { private class IntentAdapter extends ArrayAdapter<ResolveInfo> {
// actually the mdpi pixel size is 48, but this ugly...so scale icons down for listView // actually the mdpi pixel size is 48, but this looks ugly...so scale icons down for listView
private static final int MDPI_PX = 36; private static final int MDPI_PX = 36;
private IntentAdapter() { private IntentAdapter() {