Merge pull request #6140 from hackbar/cleanup2

Android: minor UI changes
This commit is contained in:
Anthony 2017-11-02 11:53:54 -07:00 committed by GitHub
commit ad8d885c1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 102 deletions

View File

@ -8,7 +8,6 @@ import android.content.SharedPreferences;
import android.hardware.usb.UsbManager; import android.hardware.usb.UsbManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.annotation.IntDef; import android.support.annotation.IntDef;
import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.app.ActivityOptionsCompat;
@ -63,24 +62,10 @@ public final class EmulationActivity extends AppCompatActivity
private int mPosition; private int mPosition;
private boolean mDeviceHasTouchScreen; private boolean mDeviceHasTouchScreen;
private boolean mSystemUiVisible;
private boolean mMenuVisible; private boolean mMenuVisible;
private static boolean sIsGameCubeGame; private static boolean sIsGameCubeGame;
/**
* Handlers are a way to pass a message to an Activity telling it to do something
* on the UI thread. This Handler responds to any message, even blank ones, by
* hiding the system UI.
*/
private Handler mSystemUiHider = new Handler()
{
@Override
public void handleMessage(Message msg)
{
hideSystemUI();
}
};
private String mScreenPath; private String mScreenPath;
private String mSelectedTitle; private String mSelectedTitle;
@ -187,32 +172,28 @@ public final class EmulationActivity extends AppCompatActivity
// Get a handle to the Window containing the UI. // Get a handle to the Window containing the UI.
mDecorView = getWindow().getDecorView(); mDecorView = getWindow().getDecorView();
mDecorView.setOnSystemUiVisibilityChangeListener
// Set these options now so that the SurfaceView the game renders into is the right size. (new View.OnSystemUiVisibilityChangeListener() {
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | @Override
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | public void onSystemUiVisibilityChange(int visibility) {
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
{
// Set the ActionBar to follow the navigation/status bar's visibility changes. // Go back to immersive fullscreen mode in 3s
mDecorView.setOnSystemUiVisibilityChangeListener( Handler handler = new Handler(getMainLooper());
new View.OnSystemUiVisibilityChangeListener() handler.postDelayed(new Runnable()
{ {
@Override @Override
public void onSystemUiVisibilityChange(int flags) public void run()
{ {
mSystemUiVisible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; enableFullscreenImmersive();
if (mSystemUiVisible)
{
getSupportActionBar().show();
hideSystemUiAfterDelay();
} }
else },
{ 3000 /* 3s */);
getSupportActionBar().hide();
} }
} }
}); });
// Set these options now so that the SurfaceView the game renders into is the right size.
enableFullscreenImmersive();
} }
else else
{ {
@ -290,38 +271,6 @@ public final class EmulationActivity extends AppCompatActivity
} }
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
if (mDeviceHasTouchScreen)
{
// Give the user a few seconds to see what the controls look like, then hide them.
hideSystemUiAfterDelay();
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
if (mDeviceHasTouchScreen)
{
if (hasFocus)
{
hideSystemUiAfterDelay();
}
else
{
// If the window loses focus (i.e. a dialog box, or a popup menu is on screen
// stop hiding the UI.
mSystemUiHider.removeMessages(0);
}
}
}
@Override @Override
public void onBackPressed() public void onBackPressed()
{ {
@ -342,6 +291,18 @@ public final class EmulationActivity extends AppCompatActivity
} }
private void enableFullscreenImmersive()
{
// It would be nice to use IMMERSIVE_STICKY, but that doesn't show the toolbar.
mDecorView.setSystemUiVisibility(
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 |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE);
}
private void toggleMenu() private void toggleMenu()
{ {
boolean result = getSupportFragmentManager().popBackStackImmediate( boolean result = getSupportFragmentManager().popBackStackImmediate(
@ -774,38 +735,6 @@ public final class EmulationActivity extends AppCompatActivity
return true; return true;
} }
private void hideSystemUiAfterDelay()
{
// Clear any pending hide events.
mSystemUiHider.removeMessages(0);
// Add a new hide event, to occur 3 seconds from now.
mSystemUiHider.sendEmptyMessageDelayed(0, 3000);
}
private void hideSystemUI()
{
mSystemUiVisible = false;
mDecorView.setSystemUiVisibility(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 |
View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_IMMERSIVE);
}
private void showSystemUI()
{
mSystemUiVisible = true;
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
hideSystemUiAfterDelay();
}
private void showSubMenu(SaveLoadStateFragment.SaveOrLoad saveOrLoad) private void showSubMenu(SaveLoadStateFragment.SaveOrLoad saveOrLoad)
{ {
// Get rid of any visible submenu // Get rid of any visible submenu

View File

@ -18,7 +18,6 @@
android:id="@+id/image_game_screen" android:id="@+id/image_game_screen"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:transitionName="image_game_screenshot"
android:layout_weight="1" android:layout_weight="1"
tools:src="@drawable/placeholder_screenshot" tools:src="@drawable/placeholder_screenshot"
tools:scaleType="centerCrop"/> tools:scaleType="centerCrop"/>