给dialog设置的主题风格
<style name="CustomDialog" 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">false</item> </style>
下面是布局
<?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:background="#c0000000" android:orientation="vertical"> <FrameLayout android:layout_gravity="top" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/iv_bk_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@drawable/dialogcuspon" /> <ImageView android:id="@+id/iv_close_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:layout_marginRight="@dimen/sm_80" android:background="@drawable/close"/> <LinearLayout android:layout_gravity="center_horizontal|bottom" android:layout_marginBottom="@dimen/sm_100" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/bt_yes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/dialog_but1"/> <Button android:id="@+id/bt_no" android:layout_marginLeft="@dimen/sm_10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/dialog_but2"/> </LinearLayout> </FrameLayout> </LinearLayout>
下面是自定义的dialog
package com.yaodan.shaketerrace.view;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import com.yaodan.shaketerrace.R;/**
* Created by swk on 2016/11/29.
*/public class Custom_dialog extends Dialog { //两个按钮用来确定和取消
private Button btn_yes;
private Button btn_no;
private ImageView iv_back; private ImageView iv_close; private int res; //设置背景图
private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器
public Custom_dialog(Context context) { super(context,R.style.CustomDialog);
} @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_cuson);
setCanceledOnTouchOutside(false);
initView();
initEvent();
} public void initView(){
iv_back= (ImageView) findViewById(R.id.iv_bk_dialog);
btn_yes= (Button) findViewById(R.id.bt_yes);
btn_no= (Button) findViewById(R.id.bt_no);
iv_close= (ImageView) findViewById(R.id.iv_close_dialog);
iv_back.setImageResource(res);
} /**
* 设置dialog的背景
* @param i
*/
public void setBackGrount(int i){
res=i;
} public void initEvent(){
btn_yes.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { if(yesOnclickListener!=null){
yesOnclickListener.onYesClick();
}
}
});
btn_no.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { if(noOnclickListener!=null){
noOnclickListener.onNoClick();
}
}
}); /**
* 我将右上方那个X直接复用取消的dialog
*/
iv_close.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
noOnclickListener.onNoClick();
}
});
} /**
* 设置取消按钮的显示内容和监听
*
* @param onNoOnclickListener
*/
public void setNoOnclickListener( onNoOnclickListener onNoOnclickListener) { this.noOnclickListener = onNoOnclickListener;
} /**
* 设置确定按钮的显示内容和监听
*
* @param onYesOnclickListener
*/
public void setYesOnclickListener(onYesOnclickListener onYesOnclickListener) { this.yesOnclickListener = onYesOnclickListener;
} /**
* 设置确定按钮和取消被点击的接口
*/
public interface onYesOnclickListener { public void onYesClick();
} public interface onNoOnclickListener { public void onNoClick();
}
}下面是具体的使用
/**
* 显示dialog的方法
* @param context 上下文
* @param res dialog的背景图
*/
public static void showCuspon(Context context,int res){ final Custom_dialog custom_dialog=new Custom_dialog(context);
custom_dialog.setBackGrount(res);
custom_dialog.setYesOnclickListener(new Custom_dialog.onYesOnclickListener() { @Override
public void onYesClick() {
custom_dialog.cancel();
MyApplication.shakeFlag=true;
}
});
custom_dialog.setNoOnclickListener(new Custom_dialog.onNoOnclickListener() { @Override
public void onNoClick() {
custom_dialog.cancel();
MyApplication.shakeFlag=true;
}
}); //由于我布置上去发现dialog有点靠下,所以将其动态地部署靠上
custom_dialog.show(); //设置dialog的大小和坐标,一直要放到show()方法的后面
Window dialogWindow = custom_dialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP); //设置dialog的大小填充整个屏幕
lp.width= WindowManager.LayoutParams.MATCH_PARENT;
lp.height= WindowManager.LayoutParams.MATCH_PARENT; //也可以根据屏幕大小来这只dialog的大小,比如屏幕的1/6
/*
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
lp.height = (int) (d.getHeight()*0.6 ); // 高度设置为屏幕
lp.width = (int) (d.getWidth()*0.6); // 宽度设置为屏幕的
*/
/*lp.x = 100; // 新位置X坐标
lp.y = 100; // 新位置Y坐标*/
dialogWindow.setAttributes(lp);
}
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦