我有这个视频观点。它有一个全屏按钮作为控制器。自动旋转首先正常工作,但每当单击全屏按钮时,屏幕旋转为横向,当我尝试自动旋转时,它不会自动旋转为纵向。
以下是我的视频观看和控制器的屏幕截图。
的代码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后启用自动旋转?
答案 0 :(得分:0)
如果您想根据您的要求随时更改活动的定向模式,则下面是执行相同操作的java代码。当我们讨论上面的所有Android屏幕方向模式时,我们可以随时从java代码设置任何模式。以下是横向和纵向模式的示例。但您可以以相同的方式设置所有可用模式。将以下代码行放在活动java文件中的任何位置,您可以在其中更改活动的屏幕方向。例如,如果要在显示屏幕之前设置特定方向,则可以在活动的onCreate()函数中添加代码。
对于风景模式
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
纵向模式
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
注意:添加此代码时,请不要忘记导入包
import android.content.pm.ActivityInfo;
加入您的代码。
有时,您希望在运行时以编程方式获取当前屏幕的屏幕方向。要获得相同的结果,您可以在activity.java文件中尝试以下java代码。
//Get current screen orientation
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getOrientation();
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
注意:不要忘记在上面的代码中导入以下代码。
import android.view.Display;
import android.content.res.Configuration;
import android.view.WindowManager;