刚刚写了一个自定义 dialog demo 也是网上查询了一下 保留记录

1.先把dialog格式设置好   透明的没有边框      这样相当于得到一个空白的画板   想怎么添加布局就怎么添加布局  想怎么写就怎么写   所以就是自定义的了

转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/details/50958659

自定义Dialog的详细步骤(实现自定义样式一般原理)

       现在很多App的提示对话框都非常有个性,然而你还用系统的对话框样式,是不是觉得很落后呢,今天我就给大家讲讲怎样自定义自己的Dialog,学会了之后,你就会根据自家app的主题,设计出相应的Dialog的风格。

      好了接下来我就以一个简单风格的自定义Dialog来讲讲自定义dialog的一般步骤和原理。

     第一步: 给Dialog设置一个风格主题(基本都是用这个主题)无边框全透明背景:

 

<!--自定义dialog背景全透明无边框theme -->
    <style name="MyDialog" 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>

2.自己定义layout 加载到自定义的MyselfDialog中 定义为自己需要的界面 主要是自定义一些按钮的点击事件 滑动事件 单选对话框等 需要通过接口调用方法 (所以自定义的类中 需要自己定义接口 到对应的点击事件中实现接口中的方法 在activity 中重写接口的方法)
public class MyselfDialog extends Dialog {

private TextView textView;
private Button btConfirm;
private Button btCancel;
private TextView titile;

public MyselfDialog(Context context) {
super(context, R.style.MyDialog);
}

private onYesClickInterface onYesClickInterface;
private onNoClickInterface onNoClickInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialig_myself);
titile = (TextView) findViewById(R.id.textview_title);
textView = (TextView) findViewById(R.id.textview);
btConfirm = (Button) findViewById(R.id.confirm);
btCancel = (Button) findViewById(R.id.cancel);
btConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onYesClickInterface != null){
onYesClickInterface.setYesClick();
}
}
});
btCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onNoClickInterface != null){
onNoClickInterface.setNoClick();
}
}
});
}

public void setOnYesClickInterface(onYesClickInterface onYesClickInterface){
if (onYesClickInterface != null){
this.onYesClickInterface = onYesClickInterface;
}
}

public void setOnNoClickInterface(onNoClickInterface onNoClickInterface){
if (onNoClickInterface != null){
this.onNoClickInterface = onNoClickInterface;
}
}


public void setTitle(String title){
this.titile.setText(title);
}

public void setMessage(String msg){
this.textView.setText(msg);
}

public interface onYesClickInterface{
public void setYesClick();
}
public interface onNoClickInterface{
public void setNoClick();
}


}

3. Activity界面代码 重写接口方法 实现对话框功能
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myselfdialog);
Button bt = (Button) findViewById(R.id.show_dialog);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyselfDialog myselfDialog = new MyselfDialog(getBaseContext());
myselfDialog.setTitle("1111111111111111111111111111111");
myselfDialog.setMessage("22222222222222222222222222222222222");
myselfDialog.setOnYesClickInterface(new MyselfDialog.onYesClickInterface() {
@Override
public void setYesClick() {
Toast.makeText(getBaseContext(),"点击确定按钮",Toast.LENGTH_SHORT).show();
}
});
myselfDialog.setOnNoClickInterface(new MyselfDialog.onNoClickInterface() {
@Override
public void setNoClick() {
Toast.makeText(getBaseContext(),"点击取消按钮",Toast.LENGTH_SHORT).show();
}
});
myselfDialog.show();
}
});

}
}



posted @ 2017-06-08 16:53  wlwqnj  阅读(141)  评论(0编辑  收藏  举报