android学习之自定义dialog

来源:互联网 发布:php get请求 编辑:程序博客网 时间:2024/05/16 07:58

                                                       本章将自己学习的自定义dialog和大家分享下

            首先大家先看下效果 

  


接下来我们就看代码:   

      1. MainActivity

       public class MainActivity extends Activity implements MyListener {
private MyDialog dialog;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialog = new MyDialog(MainActivity.this);
}


public void click(View view) {
dialog.getDialog(this).setTitle("退出当前账号").setMsg("在连续登陆15天,就可变身为QQ达人。退出QQ可能会使你现有记录归零,确定退出?").show();
}


@Override
public void configm() {
Toast.makeText(MainActivity.this, "确定", 0).show();
}


@Override
public void cancel() {
Toast.makeText(MainActivity.this, "取消", 0).show();
}


}

   2.  MyDialog

    public class MyDialog implements OnClickListener {
private Dialog alert;
private Context c;
private TextView title, msg;
private Button neg, pos;
private MyListener listener;


public MyDialog(Context c) {
this.c = c;
}


public MyDialog getDialog(MyListener listener) {
this.listener = listener;
alert = new Dialog(c, R.style.AlertDialogStyle);
View alertView = View.inflate(c, R.layout.view_alertdialog, null);
alert.setContentView(alertView);
title = (TextView) alertView.findViewById(R.id.txt_title);
msg = (TextView) alertView.findViewById(R.id.txt_msg);
neg = (Button) alertView.findViewById(R.id.btn_neg);
pos = (Button) alertView.findViewById(R.id.btn_pos);
neg.setOnClickListener(this);
pos.setOnClickListener(this);
return this;
}


public MyDialog setTitle(String m_title) {
title.setText(m_title);
return this;
}


public MyDialog setMsg(String m_content) {
msg.setText(m_content);
return this;


}


public void show() {
alert.show();
}


@Override
public void onClick(View v) {
if (v == neg) {
listener.configm();
alert.dismiss();
} else if (v == pos) {
listener.cancel();
alert.dismiss();


}


}


}

     3.接口

     public interface MyListener {
    void configm();
    void cancel();
}


    4.style样式

      <style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item><!-- 提示框的背景颜色 -->
        <item name="android:windowContentOverlay">@null</item><!-- 是否有遮盖 -->
        <item name="android:windowIsFloating">true</item> <!-- 提示框是否是浮动的 -->
        <item name="android:windowFrame">@null</item>  <!-- 提示框是否有边框 -->
        <item name="android:backgroundDimEnabled">true</item><!-- 是否允许对对话框的背景变暗  true允许变暗 -->
        <item name="android:windowNoTitle">true</item>   <!-- 提示框是否有标题 -->
        <item name="android:windowIsTranslucent">true</item>  <!-- 提示框滞使透明的 -->
    </style>


   5.dialog布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lLayout_bg"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/alert_bg"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txt_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold" />


    <TextView
        android:id="@+id/txt_msg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="16sp" />


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginTop="10dp"
        android:background="@color/alertdialog_line" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/btn_neg"
            android:layout_width="wrap_content"
            android:layout_height="43dp"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="#FF7200"
            android:textSize="16sp"
            android:text="确定"
              android:background="@drawable/selector_bt"
             />


        <ImageView
            android:id="@+id/img_line"
            android:layout_width="0.5dp"
            android:layout_height="43dp"
            android:background="@color/alertdialog_line" />


        <Button
            android:id="@+id/btn_pos"
            android:layout_width="wrap_content"
            android:layout_height="43dp"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="#FF7200"
          android:background="@drawable/selector_bt"
              android:text="取消"
            android:textSize="16sp"/>
    </LinearLayout>


</LinearLayout>

     6.drawable

 alert_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="10dp"/>
    <solid  android:color="#ffffff"/>


</shape>


       alert_bt_default.xml

  <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="10dp"/>
    <solid  android:color="#ffffff"/>


</shape>

alert_bt_press.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="10dp"/>
    <solid  android:color="#b9b9b9"/>


</shape>

  selector_bt.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/alert_bt_press"/>
   <item android:drawable="@drawable/alert_bt_default"/>
</selector>

0 0
原创粉丝点击