Hide OSC in PiP and scale properly in multi-window

This commit is contained in:
Cameron Gutman 2018-04-21 23:37:38 -07:00
parent 3a301b74a6
commit b416bafb78
2 changed files with 29 additions and 0 deletions

View File

@ -40,6 +40,7 @@ import android.content.Intent;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.Rect; import android.graphics.Rect;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
@ -425,6 +426,26 @@ public class Game extends Activity implements SurfaceHolder.Callback,
streamView.getHolder().addCallback(this); streamView.getHolder().addCallback(this);
} }
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (virtualController != null) {
// Refresh layout of OSC for possible new screen size
virtualController.refreshLayout();
// Hide OSC in PiP
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (isInPictureInPictureMode()) {
virtualController.hide();
}
else {
virtualController.show();
}
}
}
}
@Override @Override
public void onUserLeaveHint() { public void onUserLeaveHint() {
super.onUserLeaveHint(); super.onUserLeaveHint();

View File

@ -86,6 +86,14 @@ public class VirtualController {
}); });
} }
public void hide() {
relative_layout.setVisibility(View.INVISIBLE);
}
public void show() {
relative_layout.setVisibility(View.VISIBLE);
}
public void removeElements() { public void removeElements() {
for (VirtualControllerElement element : elements) { for (VirtualControllerElement element : elements) {
relative_layout.removeView(element); relative_layout.removeView(element);