android自定义相对复杂dialog

简介: 之前写了两篇关于Dialog的算是文章吧(2333),分别是:1、 Android 系统原生dialog使用2、 Android dialog Activity 使用下面开始第三篇:相对复杂的自定义dialog。

之前写了两篇关于Dialog的算是文章吧(2333),分别是:
1、 Android 系统原生dialog使用
2、 Android dialog Activity 使用
下面开始第三篇:相对复杂的自定义dialog。

一、转圈加载 dialog

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

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:tools="http://schemas.android.com/tools"
    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不在你可以自己去搞:
阿里妈妈 MUX

2、图片的旋转动画

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

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_wait_dialog"
    android:pivotX="50%"
    android:pivotY="50%" />

简单的动画没啥好说的

3、设置 dialog的小背景

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

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <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();
        }
    }

目录
相关文章
|
Java Android开发 Kotlin
Android 自定义加载动画Dialog弹窗
Android 自定义加载动画Dialog弹窗
351 0
|
XML Android开发 数据格式
Android自定义Dialog以控制其位置和宽高
Android自定义Dialog以控制其位置和宽高
492 0
|
Android开发 数据格式 XML
|
Android开发 计算机视觉 数据格式
|
Android开发
android 自定义 dialog
        package com.curiousby.baoyou.cn.quote.dialog; import com.curiousby.baoyou.cn.
736 0
|
XML Android开发 数据格式
Android自定义底部带有动画的Dialog
Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package …….
882 0