美文网首页
手把手教你鲁一个属于自己风格的dialog

手把手教你鲁一个属于自己风格的dialog

作者: 许你一世温柔似水 | 来源:发表于2017-09-25 14:20 被阅读0次

    最近项目里面有个需求,需要自定义一个dialog。废话不多说,直接上代码:

    转载注明出处:http://www.jianshu.com/p/d520312e0fe4

    个人github链接: https://github.com/       喜欢的小伙伴可以 start 一下

    项目开始之前,请确认已经创建了一个完整可以跑的项目工程(如果没有可以自行度娘哦!),完成之后我们的列车就要出发了。

    1. 自定义控件,行业规矩继承一个父类控件 

      public classCustomMessageConfirmDialogextendsDialogimplementsView.OnClickListener{

    }

    2. 重写父类构造方法

    public CustomMessageConfirmDialog(Context context){

           this(context,R.style.dialog_costum_stytle);

    }

    public CustomMessageConfirmDialog(Context context,String title,String content){

             this(context,R.style.dialog_costum_stytle);

    }

    public CustomMessageConfirmDialog(Context context,int themeResId){

            super(context,themeResId);

            mContext=context;

            this.title=title;

            this.content=content;

    }

    3.  这里我们传入了一个我们自定义的  style 样式文件,规定一下dialog的样式风格和入场出场动画(当然网上好多人喜欢用代码的形式来处理,这里就不深究了,效果是一样的) 



    4. 这里面涉及了两个dialog的动画。一个是入场动画,一个是出场的动画。

    Android原生的dialog动画样式。

    在参考了Android原生的dialog后,决定对代码进行如下的修改:

    4.1  我们同样的在style文件中创建标签为  DialogAnimation  的样式文件,继承父类  parent="android:Animation"

    4.2 在标签的内部定义两个子标签,分别是 

    需要注意的是这里的  @android:windowEnterAnimation 就是重写了父类的windowEnterAnimation和windowExitAnimation这两个属性

    4.3 入场动画引用  @anim/dialog_in  需要在  res —> anim    中定义自己的入场动画  ,文件名为dialog_in.xml ,代码如下:

    4.5  同样的出场动画引用了  @anim/dialog_exit  需要在  res —> anim    中定义自己的入场动画  ,文件名为dialog_exit.xml ,代码如下:

    到这里动画部分就算完成了。

    那我们来看一下,

    5. dialog的内容部分    

    @Override

    protected voidonCreate(BundlesavedInstanceState){

               super.onCreate(savedInstanceState);

               setContentView(R.layout.dialog_message_confirm_custom);

               //初始化view的操作

               initView();

              //不能通过window设置去除标题栏和边框操作,根据源码提示需要通过styles.xml设置

               initListener();

               initData();

    }

    6.  布局文件

    ?xml version="1.0"encoding="utf-8"?>

    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/bg_round_white"

    android:orientation="vertical">

    <TextView

    android:id="@+id/title"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center_horizontal"

    android:padding="12dp"

    android:layout_marginTop="12dp"

    android:text="提示"

    android:textSize="18sp"

    android:textColor="@color/font_common_dialog_title"/>

    <TextView

    android:id="@+id/content"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:layout_gravity="center_horizontal"

    android:lineSpacingExtra="3dp"

    android:layout_marginLeft="40dp"

    android:layout_marginTop="20dp"

    android:layout_marginRight="40dp"

    android:layout_marginBottom="30dp"

    android:text="签到成功,获得200积分"

    android:textSize="14sp"

    android:textColor="@color/font_common_dialog_context"/>

    <TextView

    android:layout_width="match_parent"

    android:layout_height="1dp"

    android:background="@color/commom_background"/>

    android:layout_width="match_parent"

    android:layout_height="50dp"

    android:orientation="horizontal">

    <TextView

    android:id="@+id/cancel"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/bg_dialog_left_white"

    android:layout_weight="1.0"

    android:gravity="center"

    android:text="取消"

    android:textSize="14sp"

    android:textColor="@color/font_color_cancal"/>

    <TextView

    android:layout_width="1dp"

    android:layout_height="match_parent"

    android:background="@color/commom_background"/>

    android:id="@+id/submit"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/bg_dialog_right_white"

    android:gravity="center"

    android:layout_weight="1.0"

    android:text="确定"

    android:textSize="14sp"

    android:textColor="@color/font_color_confirm"/>

    </LinearLayout>

    </LinearLayout>



    7. shrpe文件  绘制边框圆角  (在 drawable中创建  bg_dialog_left_white.xml的文件

    <shapexmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <solidandroid:color="@color/white"/>

    <cornersandroid:bottomLeftRadius="8dp"/>

    </shape>

    8.  在textView中引用  android:background="@drawable/bg_dialog_left_white"


    色彩值在 values -> colors.xml文件中定义  




    到这里完成了







    相关文章

      网友评论

          本文标题:手把手教你鲁一个属于自己风格的dialog

          本文链接:https://www.haomeiwen.com/subject/xjvxextx.html