您的位置:首页 > 移动开发 > Android开发

android学习之自定义dialog

2016-09-06 09:54 48 查看
                                                       本章将自己学习的自定义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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android AlertDialog