弹出框工具类

工具类代码

package com.xbrother.mobilecheck.utils;

import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.xbrother.mobilecheck.R;

/**
 * Created by qucun on 2015/11/30.
 */
public class DialogUtils {

    public static Dialog dialog = null;

    /**
     * 创建自定义processDialog控件
     *
     * @param context
     * @param msg
     * @return
     */
    public static Dialog createLoadingDialog(Context context, String msg) {
        LayoutInflater layoutInflater = LayoutInflater.from(context);
//        得到自定义view
        View view = layoutInflater.inflate(R.layout.loading_dialog, null);
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.loading_dialog);
        ImageView loadingImg = (ImageView) view.findViewById(R.id.loading_img);
        TextView tipText = (TextView) view.findViewById(R.id.loading_msg);

        Animation animation = AnimationUtils.loadAnimation(context, R.anim.loading_animation);
        loadingImg.startAnimation(animation);
        tipText.setText(msg);

        Dialog loadingDialog = new Dialog(context, R.style.patrol_dialog);
        loadingDialog.setCancelable(false);
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));

        return loadingDialog;
    }


    /**
     * 提示框
     * @param context
     * @param message
     */
    public static void createMsgDialog(Context context, String message) {
        createMsgDialog(context, 0, context.getResources().getString(R.string.default_title), message);
    }

    /**
     * 提示框
     * @param context
     * @param title
     * @param message
     */
    public static void createMsgDialog(Context context, String title, String message) {
        createMsgDialog(context, 0, title, message);
    }

    /**
     * 弹出信息提示框
     * @param context
     * @param iconId
     * @param title
     * @param message
     */
    public static void createMsgDialog(Context context, int iconId, String title, String message) {
        dialog = new Dialog(context, R.style.patrol_dialog);
        LayoutInflater layoutInflater = LayoutInflater.from(context);
//        得到自定义view
        View view = layoutInflater.inflate(R.layout.tip_message_dialog, null);
        ImageView tipIcon = (ImageView) view.findViewById(R.id.tip_icon);
        TextView tipTitle = (TextView) view.findViewById(R.id.tip_title);
        TextView tipMessage = (TextView) view.findViewById(R.id.tip_message);
        TextView tipConfirm = (TextView) view.findViewById(R.id.tip_confirm);

        if(message.length() > 14){
            message = message.substring(0, 14) + "\n" + message.substring(14);
        }

        if(iconId != 0) {
            tipIcon.setVisibility(View.VISIBLE);
            tipIcon.setImageDrawable(context.getResources().getDrawable(iconId));
        }
        tipTitle.setText(title);
        tipMessage.setText(message);
        tipConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                dialog = null;
            }
        });

        dialog.setCancelable(false);
        dialog.setContentView(view, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        dialog.show();
    }


}
loading_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/loading_dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:minHeight="80dp"
    android:minWidth="200dp"
    android:padding="10dp"
    android:background="@color/base_background">

    <ImageView
        android:id="@+id/loading_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher"/>

    <TextView
        android:id="@+id/loading_msg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dp"
        android:textColor="#A1A1A1"
        android:text="请等待, 数据加载中..."/>

</LinearLayout>
tip_message_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:minHeight="80dp"
    android:minWidth="300dp"
    android:gravity="center"
    android:background="@android:color/transparent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/dialog_top_radiusbg"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/tip_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:visibility="invisible"
            android:src="@mipmap/ic_launcher"/>

        <TextView
            android:id="@+id/tip_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:layout_gravity="center_vertical"
            android:textColor="@color/base_text_color"
            android:textSize="24sp"
            android:text="温馨提示"/>

    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="@color/light_gray"/>

    <TextView
        android:id="@+id/tip_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:padding="20dp"
        android:lines="2"
        android:background="@color/white"
        android:gravity="center"
        android:textColor="@color/base_text_color"
        android:text="提示信息的主体内容"/>

    <TextView
        android:id="@+id/tip_confirm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:gravity="center"
        android:background="@drawable/dialog_btn_selector"
        android:text="@string/text_confirm"
        android:textSize="22sp"
        android:textColor="@color/base_text_color"/>


</LinearLayout>
dialog_top_radiusbg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/white" />
    <corners
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp" />
</shape>
dialog_btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <solid android:color="@color/base_background" />
            <corners
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>

    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/item_click_color" />
            <corners
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"/>
        </shape>
    </item>

</selector>

 最后,如果想对弹出框的位置进行调整,可以使用如下方法

/*
         * 获取弹出框的窗口对象及参数对象以修改对话框的布局设置, 可以直接调用getWindow(),表示获得这个Activity的Window
         * 对象,这样这可以以同样的方式改变这个Activity的属性.
         */
        Window dialogWindow = dialog.getWindow();
        // WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        dialogWindow.setGravity(Gravity.BOTTOM);

        // 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes
        // dialogWindow.setAttributes(lp);

  

posted on 2016-05-09 22:03  哪丶信仰  阅读(142)  评论(0编辑  收藏  举报

导航