效果图
自定义Dialog
package com.zdk.mg.launcher.ui.view;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.launcher3.R;
public class VaAppLoadingDialog extends Dialog {
private TextView tvTitle;
private ImageView ivAppIcon;
public VaAppLoadingDialog(Context context, int theme) {
super(context, theme);
}
public VaAppLoadingDialog(Context context) {
this(context, R.style.loading_dialog);
setContentView(R.layout.va_app_loading_dialog);
initView();
setProperty();
}
private void initView() {
tvTitle = (TextView) findViewById(R.id.tv_title);
ivAppIcon = (ImageView) findViewById(R.id.iv_icon);
}
private void setProperty() {
setCanceledOnTouchOutside(true);
}
public void setAppTitle(CharSequence title) {
if (tvTitle != null) {
tvTitle.setText(getContext().getString(R.string.va_app_loading, title));
}
}
public void setAppIcon(Bitmap icon) {
if (ivAppIcon != null) {
ivAppIcon.setImageBitmap(icon);
}
}
}
半透明效果主要在style里loading_dialog
<style name="loading_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item> <!-- 边框 -->
<item name="android:windowNoTitle">true</item> <!-- 无标题 -->
<item name="android:windowIsTranslucent">true</item> <!-- 半透明 -->
<!--<item name="android:windowBackground">@color/white3</item> <!– 背景透明 –>-->
<item name="android:windowBackground">@drawable/va_app_loading_dialog</item>
<item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 -->
<item name="android:backgroundDimEnabled">false</item> <!-- 模糊,默认为true -->
<item name="android:windowContentOverlay">@null</item>
</style>
drawable里有圆角和半透明背景效果va_app_loading_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="#55FFFFFF" />
</shape>
需要显示的地方,调用
VaAppLoadingDialog dialog = new VaAppLoadingDialog(context);
dialog.show();
即可显示
知识点:
半透明背景要设置在style里,直接设置在layout里是不生效的。