Android 自定义Dialog
来源:互联网 发布:淘宝代理运营 编辑:程序博客网 时间:2024/06/07 08:02
自定义Dialog.
首先,把Dialog 当作是一个Activity,你想要什么样式就写成什么样子。
创建class类 继承Dialog.重写其中的方法。
效果图:
package gdswww.com.momo.view;import android.app.ActionBar;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import gdswww.com.momo.R;import static android.content.DialogInterface.BUTTON_POSITIVE;/** * Created by Administrator on 2017/6/15 0015. * 自定义 dialog样式 */public class ZhuBoDialog extends Dialog { public ZhuBoDialog(Context context) { super(context); } public ZhuBoDialog(Context context, int themeResId) { super(context, themeResId); } public static class Builder { private Context context;//当前页面 private String name;//主播名字 private String imgPath;//头像路径 private String sex;//性别 男 1 女 2 private String message; private String city;//城市 private String fensi;//粉丝 private String huozeng;//获赠 private String guanzhu;//关注 private String songchu;//送出 private View view;//布局 private View.OnClickListener quxiaoOnCliCKListener;//取消事件 private View.OnClickListener guanzhuOnCliCKListener;//关注 private View.OnClickListener aiteOnCliCKListener;//艾特 private View.OnClickListener songliOnCliCKListener;//送礼 private View.OnClickListener quanxianOnCliCKListener;//权限 /** * 当前页面 * * @param context */ public Builder(Context context) { this.context = context; } /** * 设置主播莫名字 * * @param name * @return */ public Builder setName(String name) { this.name = name; return this; } /** * 设置性别 * * @param sex */ public Builder setSex(String sex) { this.sex = sex; return this; } /** * 关注 * * @param guanzhu * @return */ public Builder setGuanZhu(String guanzhu) { this.guanzhu = guanzhu; return this; } /** * @param message * @return */ public Builder setMessage(String message) { this.message = message; return this; } /** * 设置城市 * * @param city */ public Builder setCity(String city) { this.city = city; return this; } /** * 粉丝数量 * * @param fensi */ public Builder setFensi(String fensi) { this.fensi = fensi; return this; } /** * 获赠量 * * @param huozeng */ public Builder setHuozeng(String huozeng) { this.huozeng = huozeng; return this; } /** * 送出 * * @param songchu */ public Builder setSongchu(String songchu) { this.songchu = songchu; return this; } /** * 设置布局 * * @param view * @return */ public Builder setContentView(View view) { this.view = view; return this; } /** * 取消 * * @param * @return */ public Builder setQuxiaoOnCliCKListener(View.OnClickListener quxiaoOnCliCKListener) { this.quxiaoOnCliCKListener = quxiaoOnCliCKListener; return this; } /** * 关注 * * @param guanzhuOnCliCKListener * @return */ public Builder setGuanzhuOnCliCKListener(View.OnClickListener guanzhuOnCliCKListener) { this.guanzhuOnCliCKListener = guanzhuOnCliCKListener; return this; } /** * 艾特 * * @param aiteOnCliCKListener * @return */ public Builder setAiTeOnCliCKListener(View.OnClickListener aiteOnCliCKListener) { this.aiteOnCliCKListener = aiteOnCliCKListener; return this; } /** * 送礼 * * @param songliOnCliCKListener * @return */ public Builder setSongLiOnCliCKListener(View.OnClickListener songliOnCliCKListener) { this.songliOnCliCKListener = songliOnCliCKListener; return this; } /** * 权限 * * @param quanxianOnCliCKListener * @return */ public Builder setQuanXianOnCliCKListener(View.OnClickListener quanxianOnCliCKListener) { this.quanxianOnCliCKListener = quanxianOnCliCKListener; return this; } public ZhuBoDialog create() { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ZhuBoDialog dialog = new ZhuBoDialog(context, R.style.Dialog); View layout = inflater.inflate(R.layout.dialog_zhubo, null); dialog.addContentView(layout, new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));// (ImageView)layout.findViewById(R.id.zhubo_touxiang_iv).setBackgroundResource(R.mipmap.zhubo);//主播 ((TextView) layout.findViewById(R.id.zhubo_addr_tv)).setText(city);//地址 ((TextView) layout.findViewById(R.id.zhubo_name_tv)).setText(name);//名字加ID ((TextView) layout.findViewById(R.id.zhubo_guanzhu_tv)).setText(guanzhu);//关注 ((TextView) layout.findViewById(R.id.zhubo_fs_tv)).setText(fensi);//粉丝 ((TextView) layout.findViewById(R.id.zhubo_huozeng_tv)).setText(huozeng);//获赠 ((TextView) layout.findViewById(R.id.zhubo_songchu_tv)).setText(songchu);//蹭出 layout.findViewById(R.id.click_aite_tv).setOnClickListener(aiteOnCliCKListener);//艾特 layout.findViewById(R.id.click_guanzhu_tv).setOnClickListener(guanzhuOnCliCKListener);//关注 layout.findViewById(R.id.click_quanxian_tv).setOnClickListener(quanxianOnCliCKListener);//权限 layout.findViewById(R.id.click_songliwu_tv).setOnClickListener(songliOnCliCKListener);//送礼 layout.findViewById(R.id.dialog_guanbi_iv).setOnClickListener(quxiaoOnCliCKListener);//关闭 quxiao //aite// ((ImageView)layout.findViewById(R.id.zhubo_sex_iv)).(songchu);//性别 dialog.setContentView(layout); return dialog; } }}
这是Activity页面 使用
package gdswww.com.momo.activity.me;import android.os.Build;import android.os.Message;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;import android.widget.Toast;import gdswww.com.momo.R;import gdswww.com.momo.base.MyBaseActivity;import gdswww.com.momo.view.ZhuBoDialog;/** * Created by Administrator on 2017/5/23 0023. */public class ZhiBoActivity extends MyBaseActivity { private ImageView imageView;//查看主播 @Override public void updateUI(Message msg) { } @Override public void initUI() { toastShort("主播:ID" + getIntent().getIntExtra("zhubo_id", 0)); loadImg((ImageView) viewId(R.id.zhubo_img),R.mipmap.zhubo); imageView= (ImageView) findViewById(R.id.zhibo_img); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showDialog(); } }); } @Override public void regUIEvent() { } @Override public int getLayout() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes(); localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags); } return R.layout.activity_zhibojian; } /** * 弹出对话框。 */ public void showDialog(){ final ZhuBoDialog.Builder dialog=new ZhuBoDialog.Builder(ZhiBoActivity.this) .setCity("深圳") .setFensi("4544") .setGuanZhu("1235") .setHuozeng("4565") .setName("小仙女(ID:25641)") .setSex("女") .setSongchu("4145") .setAiTeOnCliCKListener(new View.OnClickListener() {//艾特 @Override public void onClick(View view) { Toast.makeText(ZhiBoActivity.this,"你点击了艾特。",Toast.LENGTH_SHORT).show(); } }).setGuanzhuOnCliCKListener(new View.OnClickListener() {//关注 @Override public void onClick(View view) { Toast.makeText(ZhiBoActivity.this,"你点击了关注。",Toast.LENGTH_SHORT).show(); } }).setQuanXianOnCliCKListener(new View.OnClickListener() {//权限 @Override public void onClick(View view) { Toast.makeText(ZhiBoActivity.this,"你点击权限。",Toast.LENGTH_SHORT).show(); } }).setQuxiaoOnCliCKListener(new View.OnClickListener() {//取消 @Override public void onClick(View view) {dimissProgressDialog(); } }).setSongLiOnCliCKListener(new View.OnClickListener() {//送礼 @Override public void onClick(View view) { Toast.makeText(ZhiBoActivity.this,"你点击了送礼。",Toast.LENGTH_SHORT).show(); } }); dialog.create().show(); }}
布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/white_shape" android:clipChildren="false" android:clipToPadding="false" android:orientation="vertical"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:clipChildren="false" android:clipToPadding="false" android:background="#00ffffff" android:orientation="horizontal"> <com.gdswww.library.view.CircleImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:clipChildren="false" android:src="@mipmap/zhubo" app:border_color="@color/white" app:border_width="2dp" /> <ImageView android:id="@+id/dialog_guanbi_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_gravity="center" android:padding="10dp" android:src="@mipmap/guanbi" /> </RelativeLayout> <TextView android:id="@+id/zhubo_name_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" android:text="小小美女版(ID:1142564)" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10dp" android:orientation="horizontal"> <ImageView android:id="@+id/zhubo_sex_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="40dp" android:gravity="center" android:src="@mipmap/nan" /> <TextView android:id="@+id/zhubo_addr_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:drawableLeft="@mipmap/dingwei" android:drawablePadding="10dp" android:text="深圳市" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:background="#F0F0F0" android:gravity="center" android:orientation="vertical" android:paddingTop="20dp"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关注:" /> <TextView android:id="@+id/zhubo_guanzhu_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="125" android:textColor="@color/text_color" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:text="粉丝: " /> <TextView android:id="@+id/zhubo_fs_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="12522" android:textColor="@color/text_color" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginTop="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="送出:" /> <TextView android:id="@+id/zhubo_songchu_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="125" android:textColor="@color/text_color" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:text="获赠: " /> <TextView android:id="@+id/zhubo_huozeng_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="12522" android:textColor="@color/text_color" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/click_guanzhu_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text="关注" android:textColor="@color/colorTheme" /> <ImageView android:layout_width="2dp" android:layout_height="20dp" android:layout_gravity="center" android:background="#F0F0F0" /> <TextView android:id="@+id/click_aite_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text=" @TA " android:textColor="@color/colorTheme" /> <ImageView android:layout_width="2dp" android:layout_height="20dp" android:layout_gravity="center" android:background="#F0F0F0" /> <TextView android:id="@+id/click_songliwu_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text="送礼物" android:textColor="@color/colorTheme" /> <ImageView android:layout_width="2dp" android:layout_height="20dp" android:layout_gravity="center" android:background="#F0F0F0" /> <TextView android:id="@+id/click_quanxian_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text="权限" android:textColor="@color/colorTheme" /> </LinearLayout></LinearLayout>
其中:CircleImageView 是圆形框架。
最后是Style 样式。
这里写代码片
<style name="Dialog" parent="android:style/Theme.Dialog"> <item name="android:background">#00000000</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> </style>
可以根据 需求进行封装,这里没有处理。还有点击事件多的话。可以定义几个接口来实现。代码看起来简洁点。
阅读全文
0 0
- 自定义Dialog android Dialog
- 【Android】Dialog以及自定义Dialog
- android 系统Dialog,自定义Dialog
- android 自定义dialog 自定义dialog 宽度问题
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义Dialog分类
- Android Dialog( 自定义对话框)
- Android自定义Dialog
- Android-自定义Dialog样式
- Android 自定义Dialog样式
- Android:自定义dialog
- Android 自定义dialog
- Android自定义Dialog对话框
- Android 自定义dialog
- Android自定义Dialog
- Android自定义Dialog
- Android Studio 获取发布版和测试版证书SHA1的两种方式
- 为什么要进行内存对齐以及对齐规则
- HTML5本地储存实现--简易数据库
- 如何使用三层框架开发 JDBC 连接 Mysql 数据库
- 617. Merge Two Binary Trees
- Android 自定义Dialog
- Java实现-三角形计数
- 正则表达式详解
- POJ 1003 题解
- undo log详解
- firefox on ubuntu
- 关于linux socket通讯的accept函数的第三个参数剖析
- 正则表达式(十二)
- linux 安装 jdk tomcat maven