2

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

这是正在运行的 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>

谢谢大家!

4

2 回答 2

1

问题是每当方向改变时,后面的 Paused 活动都会闪烁黑色

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

android:configChanges="orientation"您可以通过在后台活动标签的 AndroidManifest 中处理来避免重新创建后台活动来尝试此操作。

你也可以试试这个。

于 2012-11-22T02:43:46.083 回答
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="landscape" 到 Manifest :

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

我不太明白为什么会这样!

于 2012-11-22T02:16:10.230 回答