dialog工具类 强大!!!

来源:互联网 发布:网络书籍排行 编辑:程序博客网 时间:2024/05/18 01:50

dialog工具类:

import android.app.Activity;import android.app.Dialog;import android.content.Context;import android.graphics.Bitmap;import android.util.SparseArray;import android.view.Display;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.FailReason;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;/** * Created by 51644 on 2017/7/20. */public abstract class DialogUtils {    private Activity activity;    private int xmlLayout;    private Dialog dialog = null;    public DialogUtils(Activity activity, int xmlLayout) {        this.activity = activity;        this.xmlLayout = xmlLayout;        createDialogView();    }    private void createDialogView() {        dialog = new Dialog(activity, R.style.PhotoDialog);        final ViewHepler viewHepler = getViewHepler();        initLayout(viewHepler, dialog);        dialog.setContentView(viewHepler.getContentView());        Window dialogWindow = dialog.getWindow();        WindowManager.LayoutParams lp = dialogWindow.getAttributes();        dialogWindow.setGravity(Gravity.CENTER);        //将对话框的大小按屏幕大小的百分比设置        WindowManager m = activity.getWindowManager();        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用        WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值        p.height = WindowManager.LayoutParams.WRAP_CONTENT;        p.width = WindowManager.LayoutParams.WRAP_CONTENT;        dialogWindow.setAttributes(p);//        android Activity改成dialog样式后 怎设置点击空白处关闭窗体,如图点击窗体意外的地方关闭窗体        dialog.setCanceledOnTouchOutside(true);        dialog.setCancelable(true);        dialog.show();    }    public abstract void initLayout(ViewHepler hepler, Dialog dialog);    private ViewHepler getViewHepler()    {        return ViewHepler.get(activity,xmlLayout);    }    public  static class ViewHepler {        private final SparseArray<View> mViews;        private View mConvertView;        private  static ViewHepler viewHepler = null;        private ViewHepler(Context context, int layoutId) {            this.mViews = new SparseArray<View>();            mConvertView = LayoutInflater.from(context).inflate(layoutId, null);        }        public static ViewHepler get(Context context,int layoutId)        {            if (viewHepler == null)            {                viewHepler = new ViewHepler(context, layoutId);            }            return viewHepler;        }        public View getContentView(){            return mConvertView;        }        /**         * 通过控件的Id获取对于的控件,如果没有则加入views         * @param viewId         * @return         */        public <T extends View> T getView(int viewId)        {            View view = mViews.get(viewId);            if (view == null)            {                view = mConvertView.findViewById(viewId);                mViews.put(viewId, view);            }            return (T) view;        }        /**         * 为TextView设置字符串         *         * @param viewId         * @param text         * @return         */        public ViewHepler setText(int viewId, String text)        {            if(text==null){                text = "";            }            TextView view = getView(viewId);            view.setText(text);            return this;        }        /**         * 为ImageView设置图片         *         * @param viewId         * @param drawableId         * @return         */        public ViewHepler setImageResource(int viewId, int drawableId)        {            ImageView view = getView(viewId);            view.setImageResource(drawableId);            return this;        }        /**         * 为ImageView设置图片         *         * @param viewId         * @param bm         * @return         */        public ViewHepler setImageBitmap(int viewId, Bitmap bm)        {            ImageView view = getView(viewId);            view.setImageBitmap(bm);            return this;        }        /**         * 为ImageView设置图片         *         * @param viewId         * @param url         * @return         */        public ViewHepler setImageByUrl(int viewId, String url)        {            final ImageView imageView = getView(viewId);            DisplayImageOptions options = new DisplayImageOptions.Builder()                    .cacheInMemory(true)//设置下载的图片是否缓存在内存中                    .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中                    .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示                    .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型                    //  .displayer(new RoundedBitmapDisplayer(20))  // 设置成圆角图片                    .build();            ImageLoader.getInstance().loadImage(url,options, new ImageLoadingListener() {                @Override                public void onLoadingStarted(String s, View view) {                }                @Override                public void onLoadingFailed(String s, View view, FailReason failReason) {                }                @Override                public void onLoadingComplete(String s, View view, Bitmap bitmap) {                    imageView.setImageBitmap(bitmap);                }                @Override                public void onLoadingCancelled(String s, View view) {                }            });            return this;        }        private View.OnClickListener mListener;        public  void setViewClick(int viewId,final ViewClickCallBack callBack){            View view = mViews.get(viewId);            if (view == null)            {                view = mConvertView.findViewById(viewId);                mViews.put(viewId, view);            }            view.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    callBack.doClickAction(v);                }            });        }        public static interface ViewClickCallBack {            public void doClickAction(View v);        }    }}

使用方法:

new DialogUtils(MainActivity.this, R.layout.dialog_view) {            @Override            public void initLayout(ViewHepler hepler, final Dialog dialog) {                //加载文字                hepler.setText(R.id.tv_close, "提示:");                hepler.setText(R.id.tv_hint, "内容test内容test内容test内容test内容test");                // 加载Resource图片                hepler.setImageResource(R.id.img_cancel,R.drawable.ic_cancel);                //加载网络图片                hepler.setImageByUrl(R.id.img_content,"http://img3.imgtn.bdimg.com/it/u=2730707097,3811913056&fm=26&gp=0.jpg");                //加载点击事件                hepler.setViewClick(R.id.img_cancel, new ViewHepler.ViewClickCallBack() {                    @Override                    public void doClickAction(View v) {                        dialog.dismiss();                    }                });                hepler.setViewClick(R.id.tv_cancel, new ViewHepler.ViewClickCallBack() {                    @Override                    public void doClickAction(View v) {                        dialog.dismiss();                    }                });                hepler.setViewClick(R.id.tv_ok, new ViewHepler.ViewClickCallBack() {                    @Override                    public void doClickAction(View v) {                        Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();                    }                });            }        };

项目地址:@ 项目地址
欢迎关注我Github : @ 我的github