android学习之自定义dialog
2016-09-06 09:54
48 查看
本章将自己学习的自定义dialog和大家分享下
首先大家先看下效果
![](http://img.blog.csdn.net/20160906100053567?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接下来我们就看代码:
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>
首先大家先看下效果
接下来我们就看代码:
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>
相关文章推荐
- VS2008重写函数 OnInitDialog
- MFC_为MFC对话框建立初始化函数BOOL HistoryData::OnInitDialog()
- 安卓Dialog实现透明背景
- TOpenPictureDialog选择大量图片
- 解决DialogFragment连续add引起的Crash崩溃
- [置顶] Android对话框Dialog和DialogFragment
- OPenFileDialog使用 VB
- ActiveX中无标题CDHtmlDialog客户区的拖动实现
- Winform中的SaveFileDialog保存文件
- Using JavaScript in PeopleSoft: Creating your own dialog boxes
- “IE浏览器不支持在css文件中设定的dialog宽度”解决方法
- 自定义Android Dialog EditText 密码输入框
- 获取javascript window.open/window.showModalDialog的传递值和返回值
- DialogFragment的使用+j接口回调
- 笔记8 | 系统时间设置界面DatePickerDialog,TimePickerDialog,DatePicker
- Android自定义Dialog
- 它们的定义dialog
- Android EditText与Button和Button点击出现的Dialog联动问题
- 问题小结(11)-dialog的半透明背景的灰度
- Android第四讲——常用的基本控件(三)Toast、Dialog、PopupWindows、Notification(通知)、ViewPager