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
阅读全文
2 0
- dialog工具类 强大!!!
- 自定义dialog+工具类
- Dialog工具类
- android强大的工具类
- Android中强大的Dialog
- 很好很强大的WEB工具类
- 强大的xUtils工具类整理
- 强大全面的表单封装工具类
- 强大全面的表单封装工具类
- 强大的Java Json工具类
- 项目中通用的Dialog工具类
- 强大的SC工具
- 计算机取证强大工具
- Android开发----强大工具
- 强大的液化工具
- shell 强大工具sed
- 4.dialog 工具
- Android的Dialog工具
- 文件上传利用
- C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]
- 一键更换hosts
- js 实现标题模块置顶显示
- 矩阵(Matrix)
- dialog工具类 强大!!!
- python你想知道的都在这里 python资源大全中文版
- 【转载】别人是怎么破解你们家无线密码的
- linux 文件系统管理
- 青蛙跳台阶衍生之变态跳台阶(递归,思路分析及代码实现)
- Ajax跨域问题
- shell的$()与``
- 树分治总结
- 刷题——质数因子