弹出框工具类
工具类代码
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);