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.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.annotation.IntDef;
import android.support.v4.app.ActivityOptionsCompat;
@ -63,24 +62,10 @@ public final class EmulationActivity extends AppCompatActivity
private int mPosition;
private boolean mDeviceHasTouchScreen;
private boolean mSystemUiVisible;
private boolean mMenuVisible;
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 mSelectedTitle;
@ -187,32 +172,28 @@ public final class EmulationActivity extends AppCompatActivity
// Get a handle to the Window containing the UI.
mDecorView = getWindow().getDecorView();
// Set these options now so that the SurfaceView the game renders into is the right size.
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
// Set the ActionBar to follow the navigation/status bar's visibility changes.
mDecorView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener()
mDecorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
{
@Override
public void onSystemUiVisibilityChange(int flags)
// Go back to immersive fullscreen mode in 3s
Handler handler = new Handler(getMainLooper());
handler.postDelayed(new Runnable()
{
mSystemUiVisible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
if (mSystemUiVisible)
@Override
public void run()
{
getSupportActionBar().show();
hideSystemUiAfterDelay();
enableFullscreenImmersive();
}
else
{
getSupportActionBar().hide();
}
}
});
},
3000 /* 3s */);
}
}
});
// Set these options now so that the SurfaceView the game renders into is the right size.
enableFullscreenImmersive();
}
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
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()
{
boolean result = getSupportFragmentManager().popBackStackImmediate(
@ -774,38 +735,6 @@ public final class EmulationActivity extends AppCompatActivity
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)
{
// Get rid of any visible submenu

View file

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