问题描述:我这里要实现一个拍照的功能,点击拍照,弹出一个Dialog显示你拍的照片并提示你是否保存,这时我还没有保存,然后我切换屏幕变成横屏,这时Dialog只显示了一半,提示你保存的那一部分没有了,不知道什么原因。
下面是我创建Dialog的代码:
private intiBuilderDialog() {
if (builder == null || !builder.isShowing()) {
builder = new Dialog(SamplingCamActivity.this, R.style.mydialog);
builder.setContentView(R.layout.img);
LayoutParams lay = builder.getWindow().getAttributes();
setParams(lay);
builder.show();
}
}
private void setParams(LayoutParams lay) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
Rect rect = new Rect();
View view = getWindow().getDecorView();
view.getWindowVisibleDisplayFrame(rect);
lay.height = dm.heightPixels - rect.top;
lay.width = dm.widthPixels;
}
下面是创建Dialog的Style:
<style name="mydialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>`enter code here
下面是Dialog的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/camera_preview_back"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/check_picture"
android:textColor="#ffffff"
android:textSize="@dimen/TitleTextSize"
android:textStyle="bold"
android:paddingLeft="20dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"/>
<View
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:background="@drawable/camera_preview_line" />
<ImageView
android:id="@+id/ImageView01"
android:layout_width="240dp"
android:layout_height="320dp"
android:layout_gravity="center"
android:layout_margin="10.0dip" />
<View
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:background="@drawable/camera_preview_line" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp" >
<Button
android:id="@+id/preview_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:layout_marginRight="10.0dip"
android:text="@string/cancel"
android:background="@drawable/image_icon"
android:textColor="@drawable/text_color"/>
<Button
android:id="@+id/preview_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10.0dip"
android:layout_toLeftOf="@id/preview_cancel"
android:text="@string/accept"
android:background="@drawable/image_icon"
android:textColor="@drawable/text_color" />
</RelativeLayout>
</LinearLayout>
下面是我在横坚屏切换时作的处理:也就是重新再创建一遍Dialog:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
if (builder != null && builder.isShowing()) {
builder.dismiss();
intiBuilderDialog();
}
}