package net.coding.program.common;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import net.coding.program.R;
import java.util.ArrayList;
/**
* 弹出框工具类
*
* @author yangzhen
*/
public class DialogUtil {
private static final String TAG = DialogUtil.class.getSimpleName();
private static Animation loadingLogoAnimation;
private static Animation loadingRoundAnimation;
/**
* 初始化进度条dialog
*
* @param activity
* @return
*/
public static LoadingPopupWindow initProgressDialog(Activity activity, OnDismissListener onDismissListener) {
if (activity == null || activity.isFinishing()) {
return null;
}
// 获得背景(6个图片形成的动画)
//AnimationDrawable animDance = (AnimationDrawable) imgDance.getBackground();
//final PopupWindow popupWindow = new PopupWindow(popupView, RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
final LoadingPopupWindow popupWindow = new LoadingPopupWindow(activity);
ColorDrawable cd = new ColorDrawable(-0000);
popupWindow.setBackgroundDrawable(cd);
popupWindow.setTouchable(true);
popupWindow.setOnDismissListener(onDismissListener);
popupWindow.setFocusable(true);
//animDance.start();
return popupWindow;
}
/**
* 显示进度条对话框
*
* @param activity
* @param popupWindow
* @param title
*/
public static void showProgressDialog(Activity activity, LoadingPopupWindow popupWindow, String title) {
if ((activity == null || activity.isFinishing()) || (popupWindow == null)) {
return;
}
final LoadingPopupWindow tmpPopupWindow = popupWindow;
View popupView = popupWindow.getContentView();
if (popupView != null) {
TextView tvTitlename = (TextView) popupView.findViewById(R.id.tv_titlename);
if (tvTitlename != null && !title.isEmpty()) {
tvTitlename.setText(title);
}
}
if (popupWindow != null && !popupWindow.isShowing()) {
final View rootView1 = ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
rootView1.post(new Runnable() {
@Override
public void run() {
try {
tmpPopupWindow.showAtLocation(rootView1, Gravity.CENTER, 0, 0);
tmpPopupWindow.startAnimation();
} catch (Exception e) {
Global.errorLog(e);
}
}
});
}
}
/**
* 隐藏对话框
*
* @param popupWindow
*/
public static void hideDialog(final PopupWindow popupWindow) {
if (popupWindow != null) {
popupWindow.getContentView().post(new Runnable() {
@Override
public void run() {
if (popupWindow != null && popupWindow.isShowing())
try {
popupWindow.dismiss();
} catch (Exception e) {
}
}
});
}
}
/**
* 立即关闭对话框, 在对话框是用来确认是否关闭某个Activity的时候上面的方法有概率会报错
*
* @param popupWindow
*/
public static void hideDialogNow(PopupWindow popupWindow) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
public static class LoadingPopupWindow extends PopupWindow {
ImageView loadingLogo;
ImageView loadingRound;
public LoadingPopupWindow(Activity activity) {
super(activity.getLayoutInflater().inflate(R.layout.common_loading, null), RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT, false);
this.loadingLogo = (ImageView) getContentView().findViewById(R.id.loading_logo);
this.loadingRound = (ImageView) getContentView().findViewById(R.id.loading_round);
if (loadingLogoAnimation == null) {
loadingLogoAnimation = AnimationUtils.loadAnimation(activity, R.anim.loading_alpha);
}
if (loadingRoundAnimation == null) {
loadingRoundAnimation = AnimationUtils.loadAnimation(activity, R.anim.loading_rotate);
}
}
public void startAnimation() {
loadingRoundAnimation.setStartTime(500L);//不然会跳帧
loadingRound.setAnimation(loadingRoundAnimation);
loadingLogo.startAnimation(loadingLogoAnimation);
}
}
public static class BottomPopupWindow extends PopupWindow {
public TextView tvTitle;
public ListView listView;
public BottomPopupAdapter adapter;
public BottomPopupWindow(Activity activity) {
super(activity.getLayoutInflater().inflate(R.layout.popup_attachment, null), RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
getContentView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
tvTitle = (TextView) getContentView().findViewById(R.id.title);
listView = (ListView) getContentView().findViewById(R.id.listView);
adapter = new BottomPopupAdapter(activity);
listView.setAdapter(adapter);
}
}
public static BottomPopupWindow initBottomPopupWindow(final Activity mActivity, String title, ArrayList<BottomPopupItem> popupItemArrayList, AdapterView.OnItemClickListener onItemClickListener) {
final BottomPopupWindow mAttachmentPopupWindow = new BottomPopupWindow(mActivity);
mAttachmentPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mAttachmentPopupWindow.setOutsideTouchable(true);
//mAttachmentPopupWindow.setAnimationStyle(R.style.PopupReversalAnimation);// android.R.style.Animation_Dialog
mAttachmentPopupWindow.setTouchable(true);
mAttachmentPopupWindow.setFocusable(true);
mAttachmentPopupWindow.tvTitle.setText(title);
mAttachmentPopupWindow.adapter.addAll(popupItemArrayList);
mAttachmentPopupWindow.listView.setOnItemClickListener(onItemClickListener);
return mAttachmentPopupWindow;
}
public static class BottomPopupItem {
public String title;
public int iconRes;
public boolean enabled = true;
public BottomPopupItem(String title, int iconRes) {
this.title = title;
this.iconRes = iconRes;
}
}
public static class BottomPopupAdapter extends ArrayAdapter<BottomPopupItem> {
public BottomPopupAdapter(Context context) {
super(context, 0);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.popup_item, null);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(getItem(position).title);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
icon.setImageResource(getItem(position).iconRes);
//title.setCompoundDrawablesWithIntrinsicBounds(getItem(position).iconRes, 0, 0, 0);
title.setEnabled(getItem(position).enabled);
icon.setEnabled(getItem(position).enabled);
return convertView;
}
}
public static class RightTopPopupWindow extends PopupWindow {
public ListView listView;
public RightTopPopupAdapter adapter;
public RightTopPopupWindow(Activity activity) {
super(activity.getLayoutInflater().inflate(R.layout.popup_top_right, null), RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
listView = (ListView) getContentView().findViewById(R.id.listView);
adapter = new RightTopPopupAdapter(activity);
listView.setAdapter(adapter);
}
}
public static RightTopPopupWindow initRightTopPopupWindow(final Activity mActivity, ArrayList<RightTopPopupItem> popupItemArrayList, AdapterView.OnItemClickListener onItemClickListener) {
final RightTopPopupWindow mRightTopPopupWindow = new RightTopPopupWindow(mActivity);
mRightTopPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mRightTopPopupWindow.setOutsideTouchable(true);
//mRightTopPopupWindow.setAnimationStyle(R.style.PopupReversalAnimation);// android.R.style.Animation_Dialog
mRightTopPopupWindow.setTouchable(true);
mRightTopPopupWindow.setFocusable(true);
mRightTopPopupWindow.adapter.addAll(popupItemArrayList);
mRightTopPopupWindow.listView.setOnItemClickListener(onItemClickListener);
return mRightTopPopupWindow;
}
public static class RightTopPopupItem {
public String title;
public int iconRes;
public boolean enabled = true;
public RightTopPopupItem(String title, int iconRes) {
this.title = title;
this.iconRes = iconRes;
}
}
public static class RightTopPopupAdapter extends ArrayAdapter<RightTopPopupItem> {
public RightTopPopupAdapter(Context context) {
super(context, 0);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.popup_top_right_item, null);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(getItem(position).title);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
icon.setImageResource(getItem(position).iconRes);
title.setEnabled(getItem(position).enabled);
icon.setEnabled(getItem(position).enabled);
return convertView;
}
}
}