版权声明:保留记忆 https://blog.csdn.net/u012811342/article/details/84953404
效果图:
Styles.xml
<style name="updateStyleDialog" parent="android:Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">true</item><!--半透明-->
<item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
colors.xml
<color name="font_common_1">#424242</color>
<color name="font_common_2">#a1a1a1</color>
<color name="font_blue">#42369a</color>
<color name="black">#000000</color>
<color name="commom_background">#f3f3f3</color>
<color name="white">#FFFFFF</color>
bg_round_white.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners
android:radius="20dp"/>
</shape>
dialog_update.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_round_white"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_horizontal"
android:text="提示"
android:textColor="@color/black"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_version_now"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:text="当前版本:V1.2.0"
android:textColor="#333C4A"
android:textSize="16sp" />
<TextView
android:visibility="gone"
android:id="@+id/tv_version_new"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:lineSpacingExtra="3dp"
android:text="新版本:V1.2.0"
android:textColor="@color/font_common_1"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_content_new"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:lineSpacingExtra="3dp"
android:text="更新内容:V1.2.0"
android:textColor="#333C4A"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/commom_background" />
<LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal">
<TextView
android:id="@+id/cancel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="取消"
android:textColor="#999BA0"
android:textSize="16sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/commom_background" />
<TextView
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="确定"
android:textColor="#BF40FF"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
UpdateDialog.java
package test.hu.com.myapplication;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
public class UpdateDialog extends Dialog implements View.OnClickListener {
private TextView titleTxt;
private TextView submitTxt;
private TextView cancelTxt;
private TextView nowVersionTxt;
private TextView newVersionTxt;
private TextView newContentTxt;
private onClickListener listener;
private String positiveName;
private String negativeName;
private String title;
private int layout;
private String nowVersion;
private String newVersion;
private String newContent;
private boolean isCancel;
@Override
protected void onStart() {
super.onStart();
this.getWindow().setDimAmount(0f);
}
private UpdateDialog(Builder builder) {
super(builder.mContext, builder.mThemeId);
this.layout = builder.layout;
this.title = builder.title;
this.listener = builder.listener;
this.positiveName = builder.positiveName;
this.negativeName = builder.negativeName;
this.nowVersion = builder.nowVersion;
this.newVersion = builder.newVersion;
this.newContent = builder.newContent;
this.isCancel = builder.isCancel;
}
public static class Builder {
private Context mContext;
private String content;
private onClickListener listener;
private String positiveName;
private String negativeName;
private String title;
private int layout;
private int mThemeId;
private String nowVersion;
private String newVersion;
private String newContent;
private boolean isCancel;
public Builder setTitle(String title) {
this.title = title;
return this;
}
public Builder setCancel(boolean isCancel) {
this.isCancel = isCancel;
return this;
}
public Builder setNowVersion(String nowVersion) {
this.nowVersion = nowVersion;
return this;
}
public Builder setNewVersion(String newVersion) {
this.newVersion = newVersion;
return this;
}
public Builder setNewContent(String newContent) {
this.newContent = newContent;
return this;
}
public Builder setThemeId(int themeId) {
this.mThemeId = themeId;
return this;
}
public Builder setPositiveButton(String name) {
this.positiveName = name;
return this;
}
public Builder setNegativeButton(String name) {
this.negativeName = name;
return this;
}
public Builder setContext(Context context) {
this.mContext = context;
return this;
}
public Builder setcontent(String content) {
this.content = content;
return this;
}
public Builder setLayout(int layout) {
this.layout = layout;
return this;
}
public Builder setOnClickLisener(onClickListener lisener) {
this.listener = lisener;
return this;
}
public UpdateDialog build() {
return new UpdateDialog(this);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout);
setCanceledOnTouchOutside(false);
initView();
this.setCancelable(isCancel);
}
private void initView() {
titleTxt = (TextView) findViewById(R.id.title);
submitTxt = (TextView) findViewById(R.id.submit);
submitTxt.setOnClickListener(this);
cancelTxt = (TextView) findViewById(R.id.cancel);
cancelTxt.setOnClickListener(this);
nowVersionTxt = (TextView) findViewById(R.id.tv_version_now);
newVersionTxt = (TextView) findViewById(R.id.tv_version_new);
newContentTxt = (TextView) findViewById(R.id.tv_content_new);
if (!TextUtils.isEmpty(nowVersion)) {
nowVersionTxt.setText(nowVersion);
}
if (!TextUtils.isEmpty(newVersion)) {
newVersionTxt.setText(newVersion);
}
if (!TextUtils.isEmpty(newContent)) {
newContentTxt.setText(newContent);
}
if (!TextUtils.isEmpty(positiveName)) {
submitTxt.setText(positiveName);
}
if (!TextUtils.isEmpty(negativeName)) {
cancelTxt.setText(negativeName);
}
if (!TextUtils.isEmpty(title)) {
titleTxt.setText(title);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cancel:
if (listener != null) {
listener.onCancleClick(this);
}
break;
case R.id.submit:
if (listener != null) {
listener.onConfirmClick(this);
}
break;
}
}
public interface onClickListener {
void onConfirmClick(Dialog dialog);
void onCancleClick(Dialog dialog);
}
}
MainActivity.java
UpdateDialog.Builder builder = new UpdateDialog.Builder()
.setContext(this)
.setTitle("标题")
.setLayout(R.layout.dialog_update)
.setThemeId(R.style.updateStyleDialog)
.setNowVersion("现在版本")
.setNewVersion("新版本")
.setNewContent("新版本描述")
.setNegativeButton("取消按钮")
.setPositiveButton("确定按钮")
.setCancel(false)//是否强制升级
.setOnClickLisener(new UpdateDialog.onClickListener() {
@Override
public void onConfirmClick(Dialog dialog) {
showToast("确定");
dialog.dismiss();
}
@Override
public void onCancleClick(Dialog dialog) {
showToast("取消");
dialog.dismiss();
}
});
builder.build().show();