【Android自定义View实战】之自定义项目通用的加载等待对话框LoadingDialog

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52971048 【DylanAndroid的csdn博客】


在平时的Android开发中,我们难免会遇到像登陆.注册.获取数据这样的操作,而用的的网络状况不同,导致操作需要等待一定的时间,那么为了友好期间,我们需要给用户提供一个在操作完之后的一个友好的等待界面,而Android系统自带的等待对话框比较难看,而且根据项目的不同,产品经理也会有不同的要求,或者客户有特殊的要求。所以,需要我们去自己自定义一个加载等待对话框。
下面我们来做一个给中石油做的一个App中的加载等待对话框。

1.先看效果图

这里写图片描述

2.准备资源文件

  • 等待对话框的背景图片->loading_bg.9.png


    这里写图片描述
  • 等待对话框的旋转动画图片->loading.png


    这里写图片描述

3.进度条动画旋转实现

  • custom_progress_draw.xml
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:drawable="@mipmap/loading"
 android:pivotX="50%"
 android:pivotY="50%"
 />

4.自定义等待对话框的布局文件

  • loading.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <RelativeLayout
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:background="@mipmap/loading_bg">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center|bottom"
            android:orientation="vertical">

            <ProgressBar
                style="@android:style/Widget.ProgressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:indeterminateDrawable="@drawable/custom_progress_draw" />


            <TextView
                android:layout_marginBottom="20dp"
                android:id="@+id/tv_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="正在登录"
                android:layout_marginTop="20dp"
                android:textColor="#fff" />
        </LinearLayout>

    </RelativeLayout>

</RelativeLayout>

5.自定义对话框代码:

package cn.bluemobi.dylan;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.TextView;

/**
 * 自定义加载进度对话框
 * Created by Dylan on 2016-10-28.
 */

public class LoadingDialog extends Dialog {
    private TextView tv_text;

    public LoadingDialog(Context context) {
        super(context);
        /**设置对话框背景透明*/
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        setContentView(R.layout.loading);
        tv_text = (TextView) findViewById(R.id.tv_text);
        setCanceledOnTouchOutside(false);
    }

    /**
     * 为加载进度个对话框设置不同的提示消息
     *
     * @param message 给用户展示的提示信息
     * @return build模式设计,可以链式调用
     */
    public LoadingDialog setMessage(String message) {
        tv_text.setText(message);
        return this;
    }
}

6.用法:一句代码搞定

  • MainActivity中

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       new LoadingDialog(this).setMessage("正在加载...").show();

   }

7.再次看效果

这里写图片描述

8.GitHub地址https://github.com/linglongxin24/LoadingDialog

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,015评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,268评论 4 61
  • 建立汉朝 彭城大战的时候,项羽捉获了刘太公和吕雉。广武对峙,他就绑起刘太公来要挟刘邦,说:“你不出来,我就烹了刘太...
    赤军阅读 1,224评论 0 3
  • 今天,我没有打算剖析玩游戏对手眼协调、大脑发育的好处,也不打算研讨菜鸡喷子掩藏在网络ID下的人性两大驱力。只是单纯...
    治沙千岛酱阅读 628评论 0 1
  • “何必为部分生活而哭泣,君不见全部的人生,都让人潸然泪下。”――塞内加 我不喜欢柴米油盐,它让人没时间去感知生活的...
    莫作空头文学家阅读 488评论 2 4