【Android】高仿QQ对话框之自定义对话框CustomDialog
来源:互联网 发布:股票日内交易软件 编辑:程序博客网 时间:2024/05/17 22:42
1.效果对比图
2.对话框布局--confirm_dialog.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/confimDialogRoot" android:layout_width="@dimen/dialogBase_width" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="@drawable/common_alert_bg" > <TextView android:id="@+id/tvTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/tvContent" android:layout_alignParentTop="true" android:layout_alignRight="@+id/tvContent" android:layout_marginTop="@dimen/dialogBase_title_marginTop" android:ellipsize="end" android:gravity="center" android:singleLine="true" android:text="标题栏示例" android:textColor="@color/black" android:textSize="@dimen/dialogBase_title_textSize" /> <TextView android:id="@+id/tvContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvTitle" android:layout_marginBottom="@dimen/dialogBase_body_marginBottom" android:layout_marginLeft="@dimen/dialogBase_body_marginLeft" android:layout_marginRight="@dimen/dialogBase_body_marginRight" android:layout_marginTop="@dimen/dialogBase_body_marginTop" android:gravity="center_horizontal|left" android:text="正文内容示例\n\n1.正文内容示例正文内容示例正文内容示例正文内容示例\n2.正文内容示例" android:textColor="@color/black" android:textSize="@dimen/dialogBase_content_textSize" /> <View android:id="@+id/horizontalDividerLine" android:layout_width="match_parent" android:layout_height="@dimen/dialogBase_divider_width" android:layout_below="@+id/tvContent" android:background="@color/dialog_gray" /> <Button android:id="@+id/btnSingle" android:layout_width="match_parent" android:layout_height="@dimen/dialogBase_btnHeight" android:layout_below="@+id/horizontalDividerLine" android:background="@drawable/common_dialog_single_button" android:ellipsize="end" android:singleLine="true" android:text="确定" android:textColor="@color/dialog_blue" android:textSize="@dimen/dialogBase_button_textSize" /></RelativeLayout>
3.自定义Dialog--ConfirmDialog.java
/** * */package com.example.qq.overall.view;import android.app.Dialog;import android.content.Context;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.TextView;import com.example.qq.R;import com.example.qq.overall.interfaces.CustomDialogInterface.OnClickListenter;/** * Description: 只有一个按钮的对话框 * * @author danDingCongRong * @Version 1.0.0 * @Created at 2014-7-17 19:50:49 * @Modified by [作者] on [修改日期] */public class ConfirmDialog extends Dialog {private CharSequence title;private CharSequence content;private CharSequence btnText;private OnClickListenter btnSingleOnClickListener;private ConfirmDialog(Context context) {super(context);}private ConfirmDialog(Context context, int theme) {super(context, theme);}public static class Builder {private Context context;private ConfirmDialog dialog;public Builder(Context context) {this.context = context;this.dialog = new ConfirmDialog(context, R.style.AlertDialog);}public Builder setTitle(CharSequence title) {dialog.title = title;return this;}public Builder setContent(CharSequence content) {dialog.content = content;return this;}public Builder setSingleButton(CharSequence text,OnClickListenter onClickListenter) {dialog.btnText = text;dialog.btnSingleOnClickListener = onClickListenter;return this;}public ConfirmDialog create() {View view = initView();dialog.setContentView(view);dialog.setCanceledOnTouchOutside(true);return dialog;}private View initView() {LayoutInflater inflater = (LayoutInflater) context.getSystemService("layout_inflater");View view = inflater.inflate(R.layout.confirm_dialog, null);TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle);TextView tvContent = (TextView) view.findViewById(R.id.tvContent);Button btnSingle = (Button) view.findViewById(R.id.btnSingle);tvTitle.setText(dialog.title);tvContent.setText(dialog.content);btnSingle.setText(dialog.btnText);btnSingle.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if (v.getId() == R.id.btnSingle&& MotionEvent.ACTION_UP == event.getAction()) {dialog.btnSingleOnClickListener.onClick(v);dialog.dismiss();}return false;}});return view;}}}
/** * */package com.example.qq.overall.interfaces;import android.view.View;/** * Description: 自定义对话框中的接口 * * @author danDingCongRong * @Version 1.0.0 * @Created at 2014-7-17 08:50:40 * @Modified by [作者] on [修改日期] */public interface CustomDialogInterface {public static interface OnClickListenter {public void onClick(View v);}}
4.测试代码
public void singleButtonDialog(View view) {ConfirmDialog.Builder builder = new ConfirmDialog.Builder(context);builder.setTitle("SD卡不可用");builder.setContent("SD卡不可用,传文件、图片相关等部分功能将不能正常使用!");builder.setSingleButton("确定",new CustomDialogInterface.OnClickListenter() {@Overridepublic void onClick(View v) {Toast.makeText(context, "成功了!!!!!", Toast.LENGTH_LONG).show();}});ConfirmDialog dialog = builder.create();dialog.show();}
5.其他相关资源文件
<!-- 自定义的对话框 --> <dimen name="dialogBase_title_textSize">20sp</dimen> <dimen name="dialogBase_content_textSize">16sp</dimen> <dimen name="dialogBase_button_textSize">16sp</dimen> <dimen name="dialogBase_width">310.0dp</dimen> <dimen name="dialogBase_title_marginTop">15.0dp</dimen> <dimen name="dialogBase_body_paddingLeft">15.0dp</dimen> <dimen name="dialogBase_body_paddingRight">15.0dp</dimen> <dimen name="dialogBase_body_marginTop">10.0dp</dimen> <dimen name="dialogBase_body_marginBottom">10.0dp</dimen> <dimen name="dialogBase_body_marginLeft">15.0dp</dimen> <dimen name="dialogBase_body_marginRight">15.0dp</dimen> <dimen name="dialogBase_body_max_height">420.0dp</dimen> <dimen name="dialogBase_btnHeight">44.0dp</dimen> <dimen name="dialogBase_divider_width">1.0px</dimen>
<!-- 自定义对话框 CustomDialog --> <color name="transparent">#00000000</color> <color name="dialog_gray">#34000000</color> <color name="dialog_blue">#ff0079ff</color>
<!-- 自定义CustomDialog样式 --> <style name="AlertDialog" parent="@android:style/Theme.Translucent"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/common_alert_btn_pressed" android:state_pressed="true"/> <item android:drawable="@color/transparent"/></selector>
0 0
- 【Android】高仿QQ对话框之自定义对话框CustomDialog
- Android对话框(二)进度条对话框ProgressDialog和自定义对话框CustomDialog
- Android自定义对话框仿QQ退出
- Android高仿IOS和QQ的弹出对话框
- Android自定义Dialog(仿QQ同步助手退出对话框)
- Android 自定义对话框(仿iPhoneQQ)
- 仿QQ对话框
- Android之自定义对话框
- Android 高仿IOS底部Dialog对话框。
- 高仿IOS对话框
- Android自定义View之高仿QQ健康
- Android 自定义 View 之高仿 QQ 健康
- android中的对话框之三:自定义对话框
- 对话框之自定义对话框
- Android自定义对话框实现QQ退出界面
- Android自定义对话框实现QQ退出界面
- Android实用视图动画及工具系列之五:底部回复对话框,仿QQ空间微信朋友圈回复对话框
- android开发之自定义对话框
- 编程算法 - 完全背包问题 代码(C)
- SharedPreferences详解(一)——基础知识
- Java反射
- 1.随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,最小数
- SQL联合索引 与 单一列的索引
- 【Android】高仿QQ对话框之自定义对话框CustomDialog
- 【OpenCV入门教程之八】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- android异步加载图片显示,并且对图片进行缓存实例
- ListView加载网络数据和图片
- 内省操作JavaBean
- Java中字符串中存在空格引发的问题,及解决方法。
- Python对象的深拷贝与浅拷贝
- C#开发 WinForm如何在选项卡中集成加载多个窗体 实现窗体复用(图文)
- 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波