这是项目中用到的圆角的dialog,记录于此。
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
/**
* Created by LY on 2016/5/18.
* 圆角的dialog
*/
public class RoundCornerDialog extends Dialog {
private static int default_width = 160; //默认宽度
private static int default_height = 120;//默认高度
public RoundCornerDialog(Context context, View layout, int style) {
this(context, default_width, default_height, layout, style);
}
public RoundCornerDialog(Context context, int width, int height, View layout, int style) {
super(context, style);
setContentView(layout);
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.CENTER;
window.setAttributes(params);
}
//圆角的dialog样式
// <style name="RoundCornerDialog" 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:background">@android:color/transparent</item>
// <item name="android:windowBackground">@android:color/transparent</item>
// <item name="android:backgroundDimEnabled">true</item>
// <item name="android:backgroundDimAmount">0.6</item>
// </style>
}
项目中使用:
/**
* 展示加载中的dialog
*/
private RoundCornerDialog roundCornerDialog_loading;
private void showLoadingDialog() {
View view = View.inflate(context, R.layout.dialog_loading, null);
roundCornerDialog_loading = new RoundCornerDialog(context, 0, 0, view, R.style.RoundCornerDialog);
roundCornerDialog_loading.show();
roundCornerDialog_loading.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失
roundCornerDialog_loading.setOnKeyListener(keylistener);//设置点击返回键Dialog消失,并关闭此Activity
ImageView iv_loading = (ImageView) view.findViewById(R.id.iv_loading);
Glide.with(context)
.load(R.drawable.loading1)
.asGif()
.into(iv_loading);
}
DialogInterface.OnKeyListener keylistener = new DialogInterface.OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if (roundCornerDialog_loading != null) {
roundCornerDialog_loading.dismiss();
backPage();
}
return true;
} else {
return false;
}
}
};
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/shape_circle_corner_gray_apha"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_loading"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:src="@drawable/loading_default"/>
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的颜色 -->
<solid android:color="#d5d5d5" />
<!-- 设置按钮的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
<corners android:radius="16dip" />
<!-- padding:Button里面的文字与Button边界的间隔 -->
<!--<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"/>-->
</shape>