【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
原创粉丝点击