【发布时间】:2017-12-04 00:03:06
【问题描述】:
我有这个视频视图。它有一个全屏按钮作为控制器。自动旋转一开始正常,但是当点击全屏按钮时,屏幕旋转为横向,当我尝试自动旋转时,它不会自动旋转为纵向。
这是我的视频视图和控制器的屏幕截图。
mFullScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//To fullscreen
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mFullScreen.setImageResource(R.drawable.fullscreen);
toolbar.setVisibility(View.VISIBLE);
updateMetadata(false);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getSupportActionBar().hide();
mFullScreen.setImageResource(R.drawable.normal_screen);
toolbar.setVisibility(View.INVISIBLE);
updateMetadata(true);
}
}
});
这是我的 onConfiguration 更改方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getSupportActionBar().show();
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
getSupportActionBar().hide();
toolbar.setVisibility(View.INVISIBLE);
try {
channelNameText.setVisibility(View.GONE);
channelImage.setVisibility(View.GONE);
} catch (NullPointerException ne) {
ne.printStackTrace();
}
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
updateMetadata(false);
} else {
Logger.e("Orientation", "ORIENTATION_POTRAIT");
try {
channelNameText.setVisibility(View.VISIBLE);
channelImage.setVisibility(View.VISIBLE);
} catch (NullPointerException ne) {
ne.printStackTrace();
}
mFullScreen.setImageResource(R.drawable.fullscreen);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
updateMetadata(true);
}
}
只有当我们按下全屏按钮时才会调用 onConfiguration 方法。如何在 setRequestedOrientation 之后启用自动旋转?
【问题讨论】:
-
您是否检查过您的设备是否开启了自动旋转功能?
-
是的,自动旋转已打开,起初自动旋转有效,但在按下全屏后,调用 setRequestOrientation() 自动旋转不起作用。
标签: java android android-layout autorotate