自定义加载中Dialog

来源:互联网 发布:淘宝开店需要交钱吗 编辑:程序博客网 时间:2024/05/04 12:54

一般在发起网络请求时,我们需要一个加载提示框,Android自带了progressDialog等待框,但是为了适应自己的体验,我们就需要自定义dialog了。

首先定义一个布局文件:custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:gravity="center"    android:background="@drawable/dialog_bg"    android:padding="10dp"    >    <ProgressBar        android:id="@+id/progress"        android:layout_width="30dp"        android:layout_height="30dp"        android:layout_centerHorizontal="true"        android:indeterminateDrawable="@drawable/progress_bg"        />    <TextView        android:id="@+id/text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center"        android:layout_centerHorizontal="true"        android:layout_below="@id/progress"        android:layout_marginTop="5dp"        android:padding="2dp"        android:textColor="#000000"        android:textSize="12sp"        android:text="加载中。。。" /></RelativeLayout>

一个ProgressBar 放一个旋转的图片,下面放一个TextView展示文字。

android:indeterminateDrawable="@drawable/progress_bg"

对应的背景动画为:

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


dialog的主题
loading_dialog :
 <style name="loading_dialog" parent="android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item>        <item name="android:windowNoTitle">true</item>        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowIsFloating">true</item>        <item name="android:backgroundDimEnabled">true</item>        <item name="android:background">@android:color/transparent</item>    </style>


那么接着就要处理代码了:

package com.example.administrator.dialogtest01;import android.app.Dialog;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.drawable.Drawable;import android.text.TextPaint;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;/** * 自定义dialog * */public class LoadingDialog {    private Dialog dialog ;    public LoadingDialog(Context context,String msg)    {        dialog = new Dialog(context,R.style.loading_dialog);        //加载布局        View layout = LayoutInflater.from(context).inflate(R.layout.custom_dialog,null);        TextView textView = (TextView)layout.findViewById(R.id.text);        textView.setText(msg);        //加载自定义布局        dialog.setContentView(layout);        //设置不可取消        dialog.setCancelable(false);        dialog.show();    }}
这里只做show操作,使用的时候直接
  new LoadingDialog(this,"登录中...");
就可以,当然我们还需要dismiss ,用匿名对象不合适。这里只是做个示范。




demo地址

0 0