方向更改时,暂停活动会闪烁黑色

时间:2012-11-22 00:06:18

标签: android

在我的应用程序中,我使图像可以点击,一旦点击它们,另一个对话类型活动就会启动,其中包含更大版本的图像。问题是,无论何时改变方向,背面的暂停活动都会闪烁黑色。似乎它没有动画它的方向变化。只有Paused Activity闪烁黑色。

以下是正在运行的Activity的代码。

public class ImageDialog extends Activity {

    private ImageView mDialog;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.image_dialog);
        mDialog = (ImageView)findViewById(R.id.imageView2);
        boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
        if (tabletSize) {
            // do something
        } else {
            int orientationMode = getResources().getConfiguration().orientation;
            if (orientationMode == 1) {
               changeViewPlease();
            }
        }




    }
    public void onScreenClickClose(View view) {
        finish();
    }
    public void changeViewPlease() {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
}

和正在使用的样式:

      <style name="myDialogTheme" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:backgroundDimAmount">.8</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFullscreen">true</item>
   </style>

布局xml表:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/image_dialog_root"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:onClick="onScreenClickClose" >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:src="@drawable/image1largerotated" />

</FrameLayout>

谢谢大家!

2 个答案:

答案 0 :(得分:1)

  

问题是背面的暂停活动闪烁黑色   每当方向改变时

这可能是因为您的背景活动被破坏并在更改方向时再次重新创建。这是活动的默认行为。

您可以通过在AndroidManifest中处理背景活动代码中的android:configChanges="orientation"来避免重新播放背景活动来尝试此操作。

你也可以尝试一下。

答案 1 :(得分:0)

这是一个中途解决方案,它仍然不考虑onCreate()之后的方向更改。

将此添加到暂停的活动:

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
int orientationMode = getResources().getConfiguration().orientation;
if (orientationMode == 1) {
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}

@Override
protected void onResume() {

    super.onResume();
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

和android:screenOrientation =“风景”给Manifest:

<activity android:name=".ImageDialog" android:theme="@style/myDialogTheme" 
   android:screenOrientation="landscape">  

我不太明白为什么会有效!