我正在为视频流构建应用。它具有Youtube风格的布局,纵向布局显示顶部的视频和底部的其他内容列表。该应用程序可以通过旋转设备或单击按钮在横向上显示全屏视频。
现在,如果我将手机旋转到横向,然后将其旋转回肖像,则布局将按预期返回到纵向。相反,如果我点击按钮强制纵向模式,旋转设备横向观看视频,然后我将其旋转回肖像,布局仍然坚持横向。
我在清单中的活动:
<activity
android:name="MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
android:label="@string/app_name"
android:launchMode="singleTask" />
点击我的按钮:
mChangeOrientButton.setOnClickListener((OnClickListener)(new OnClickListener() {
public final void onClick(View it) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
}));
我的onConfigurationChanged方法(我注意到,如果我点击按钮然后旋转手机,只要被请求的方向设置为与不同的东西不同,此方法就不再被调用了):
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
{
// Set the layout for landscape mode
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
// Set the layout for portrait mode
}
}
我尝试将requestedOrientation重置为包含这样的内容:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
{
// Set the layout for landscape mode
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
// Set the layout for portrait mode
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
但它不起作用,因为方向被强制从纵向到横向,然后再次设置为未指定,然后用户有机会将其旋转到横向,所以它会立即再次变为肖像,它似乎在做什么都没有。
答案 0 :(得分:0)