Android DialogUtils对话框及进度框管理类

通过对support v4/v7/v13的区别我们了解到v7最低兼容Android2.1版本的系统,所以我们使用Dialog可以这样导入:

import android.support.v7.app.AlertDialog; 
 
 
 //对话框
    private static AlertDialog alertDialog;

    /**
     *  显示单独按钮的Dialog
     */
    public static void showSimpleDialog(Activity context, String title, String message , DialogInterface.OnClickListener clickListener) {
        AlertDialog.Builder builder =new AlertDialog.Builder(context);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(message);
        //监听事件
        if (clickListener != null){
            builder.setPositiveButton("确认",clickListener);
        }else{
            builder.setNegativeButton("知道了",null);
        }
        alertDialog=builder.create();
        alertDialog.setCanceledOnTouchOutside(false);
        if(!((Activity) context).isFinishing()){
            alertDialog.show();
        }
    }

    /**
     *  显示双按钮Dialog
     */
    public static void showDoubleDialog(Activity context, String title, String message , DialogInterface.OnClickListener clickListener) {
        AlertDialog.Builder builder =new AlertDialog.Builder(context);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(message);
        //监听事件
        if (clickListener != null){
            builder.setPositiveButton("确认",clickListener);
        }else{
            builder.setPositiveButton("确认",null);
        }
        builder.setNegativeButton("取消",null);
        alertDialog=builder.create();
        alertDialog.setCanceledOnTouchOutside(false);
        if(!context.isFinishing()){
            alertDialog.show();
        }

    }
进度条对话框,需要自定义布局:
 
 
    //进度条
    private static Dialog progressDialog;
    /**
     * 显示进度条
     * @param context
     * @param msg
     */
    public static void showProgress(Activity context,String msg){
        if (progressDialog == null){
            progressDialog = new Dialog(context , R.style.loadingdialog);
            progressDialog.setContentView(R.layout.loading_dialog);
            progressDialog.setCanceledOnTouchOutside(false);
        } else if (progressDialog.isShowing()){
            progressDialog.dismiss();
        }
        if(!context.isFinishing())
        {
            progressDialog.show();
        }

    }

    /**
     * 关闭进度条
     */
    public static void dismissProgress(){
        if (progressDialog != null ){
            if (progressDialog.isShowing()){
                progressDialog.dismiss();
            }
        }
    }
其中布局:R.layout.loading_dialog:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="150dp"
        android:layout_height="130dp"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:gravity="center"
        android:background="#ab0e0e0e">

        <ProgressBar
            android:id="@+id/pro"
            android:indeterminateTintMode="src_atop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:indeterminateDrawable="@drawable/progressbar_bg"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="加载中..."/>

    </LinearLayout>

</RelativeLayout>

其中ProgressBar的Style.Theme: R.style.loadingdialog

   <style name="loadingdialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item><!-- Dialog的边框,@null标识无 -->
        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
        <item name="android:windowIsTranslucent">false</item><!--半透明-->
        <item name="android:windowNoTitle">true</item><!--无标题-->
        <item name="android:windowBackground">@color/transparent</item><!--背景透明-->
        <item name="android:backgroundDimEnabled">false</item><!--模糊-->
    </style>

其中ProgressBar属性 android :indeterminateDrawable= "@drawable/progressbar_bg"

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%" android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="360">

    <shape
        android:shape="ring"
        android:innerRadiusRatio="3"
        android:thicknessRatio="10"
        android:useLevel="false">
        <gradient
            android:type="sweep"
            android:useLevel="false"
            android:startColor="#ffa500"
            android:centerColor="#FF7121"
            android:centerY="0.50"
            android:endColor="#FFFF00" />
    </shape>

</animated-rotate>




猜你喜欢

转载自blog.csdn.net/csdn_aiyang/article/details/80977293