您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页android自定义相对复杂dialog

android自定义相对复杂dialog

来源:二三四教育网

一、转圈加载 dialog

见过大佬自己自定义的的 dialog ,也就是自己画出来的,额,楼主比较渣、楼主搞不了、我比较怂(一看就是有自知之明的好楼主)。但是呢,我还不服输,于是楼主用了偷懒的方法,废话不说,开干:

1、画个布局 即 layout.xml 文件

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    
    android:background="@drawable/shape_wait_dialog"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="20dp">

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateDrawable="@drawable/anim_dialog_wait" />

    <TextView
        android:id="@+id/tv_waitDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:singleLine="true"
        tools:text="请稍等,拼命中..."
        android:textColor="#1296DB"
        android:textSize="14sp" />
</LinearLayout>

这里有一个图标:

加载图标
对了,告诉各位一个很好的图标网站哈,不知道小伙伴一定要收藏,如果你家ui不在你可以自己去搞:

2、图片的旋转动画

在 drawable 文件夹下创建一个动画文件 当然了你也可以去 amin 文件夹下搞

<animated-rotate 
    android:drawable="@drawable/ic_wait_dialog"
    android:pivotX="50%"
    android:pivotY="50%" />

简单的动画没啥好说的

3、设置 dialog的小背景

在 drawable 文件夹下创建一个 shape 文件

<shape 
    <corners android:radius="10dp" />
         <!--不同颜色不同效果哦-->
    <solid android:color="#3c3c3c" />
</shape>

4、很关键的一步 设置 style

在 value/style.xml 文件下设置 我们的 dialog 的基本属性

  <style name="loading_dialog_style" parent="@android:style/Theme.Dialog">
        <!--提示框是否有边框-->
        <item name="android:windowFrame">@null</item>
        <!--是否为浮动窗口-->
        <item name="android:windowIsFloating">true</item>
        <!--是否半透明-->
        <item name="android:windowIsTranslucent">false</item>
        <!--去除title-->
        <item name="android:windowNoTitle">true</item>
        <!--窗口背景颜色-->
        <item name="android:windowBackground">@drawable/shape_wait_dialog</item>
        <!--是否允许对话框的背景变暗-->
        <item name="android:backgroundDimEnabled">true</item>
        <!--控制灰度值-->
        <item name="android:backgroundDimAmount">0.4</item>
    </style>

5、在使用

 private Dialog myDialog;

   /**
     * 展示 dialog
     *
     * @param context     上下文
     * @param waitContent 展示文字
     * @param canCancel   是否点击 dialog 周围关闭,是否可以返回键关闭 true 表示可以, false 你懂得
     */
    private void showMyWait(Context context, String waitContent, boolean canCancel) {
        @SuppressLint("InflateParams") View view = LayoutInflater.from(this).inflate(R.layout.layout_wait_dialog, null);
        TextView tvWaitDialog = view.findViewById(R.id.tv_waitDialog);
        tvWaitDialog.setText(waitContent);

        myDialog = new Dialog(context, R.style.loading_dialog_style);
        myDialog.setCancelable(canCancel);
        myDialog.setContentView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
        myDialog.show();
    }


   /**
     * 主动关闭 dialog
     */

    private void cancelDialog() {
        if (myDialog != null && myDialog.isShowing()) {
            myDialog.cancel();
        }
    }

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务