實現下面這種對話框效果

1、寫好布局文件success_dialog_style.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_all" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:background="@drawable/white_shadow"> <TextView android:id="@+id/tv_is_success" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:layout_marginTop="40dp" android:gravity="center_horizontal" android:text="恭喜, 搶單成功!" android:textColor="#333333" android:textSize="25sp" /> <TextView android:id="@+id/tv_t2、自定義對話框CompeteOrderDialog.javaimport android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.text.Spanned;import android.view.View;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.shirly.test.R;/** * Created by Mona on 2017/2/5. */public class CompeteOrderDialog extends Dialog { PRivate RelativeLayout btn_close; private TextView tv_is_succedd; private TextView tv_tips; private ImageView iv_is_success; private OnCloseDialogClickListener listener; public void setListener(OnCloseDialogClickListener listener) { this.listener = listener; } private String title; private Spanned tips; private int imgId; public Spanned getTips() { return tips; } public void setTips(Spanned tips) { this.tips = tips; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getImgId() { return imgId; } public void setImgId(int imgId) { this.imgId = imgId; } public CompeteOrderDialog(Context context) { super(context, R.style.CustomerDialog); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.success_dialog_style); //按空白處能取消對話 setCanceledOnTouchOutside(true); //初始化界面控件 initView(); //初始化界面數據 initData(); } private void initData() { tv_is_succedd.setText(title); tv_tips.setText(tips); iv_is_success.setImageResource(imgId); btn_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onCloseClick(); } }); } private void initView() { btn_close = (RelativeLayout) findViewById(R.id.rl_all); tv_is_succedd = (TextView) findViewById(R.id.tv_is_success); tv_tips = (TextView) findViewById(R.id.tv_tips); iv_is_success = (ImageView) findViewById(R.id.iv_is_success); } public interface OnCloseDialogClickListener { void onCloseClick(); }}3、在style.xml文件中寫一個CustomerDialog樣式
<style name="CustomerDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <!--是否去除標題 --> <item name="android:windowNoTitle">true</item> <!--是否去除邊框--> <item name="android:windowFrame">@null</item> <!--是否浮現在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否模糊--> <item name="android:backgroundDimEnabled">true</item> </style>4、顯示對話框
final CompeteOrderDialog dialog = new CompeteOrderDialog(this);dialog.setTitle("恭喜, 搶單成功!");dialog.setImgId(R.drawable.success);dialog.setTips(Html.fromHtml("請登錄網頁端,在 <font color='#00ADF2'>【我的任務—進行中】</font>頁面查看搶到的任務。"));dialog.setListener(new CompeteOrderDialog.OnCloseDialogClickListener() { @Override public void onCloseClick() { dialog.dismiss(); }});dialog.show();新聞熱點
疑難解答