在我的应用程序中,我使图像可以点击,一旦点击它们,另一个对话类型活动就会启动,其中包含更大版本的图像。问题是,无论何时改变方向,背面的暂停活动都会闪烁黑色。似乎它没有动画它的方向变化。只有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>
谢谢大家!
答案 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">
我不太明白为什么会有效!