首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

xUtils介绍 -- DbUtils、ViewUtils、HttpUtils、BitmapUtils

2023-11-11 来源:骅佗教育

https://github.com/wyouflf/xUtilsxUtils简单介绍

  • xUtils 包括了非常多有用的android工具。
  • xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,很多其它的事件注解支持且不受混淆影响...
  • xUitls 最低兼容android 2.2 (api level 8)
  • 眼下xUtils主要有四大模块:DbUtils模块:
  • android中的orm框架,一行代码就能够进行增删改查;
  • 支持事务,默认关闭;
  • 可通过注解自己定义表名,列名。外键。唯一性约束。NOT NULL约束。CHECK约束等(须要混淆的时候请注解表名和列名);
  • 支持绑定外键。保存实体时外键关联实体自己主动保存或更新。
  • 自己主动载入外键关联实体。支持延时载入。
  • 支持链式表达查询,更直观的查询语义,參考以下的介绍或sample中的样例。
  • ViewUtils模块:
  • android中的ioc框架,全然注解方式就能够进行UI。资源和事件绑定;
  • 新的事件绑定方式,使用混淆工具混淆后仍可正常工作。
  • 眼下支持经常使用的20种事件绑定。參见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
  • HttpUtils模块:
  • 支持同步。异步方式的请求;
  • 支持大文件上传。上传大文件不会oom;
  • 支持GET,POST。PUT,MOVE,COPY,DELETE。HEAD,OPTIONS。TRACE。CONNECT请求;
  • 下载支持301/302重定向。支持设置是否依据Content-Disposition重命名下载的文件。
  • 返回文本内容的请求(默认仅仅启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
  • BitmapUtils模块:
  • 载入bitmap的时候无需考虑bitmap载入过程中出现的oom和android容器高速滑动时候出现的图片错位等现象;
  • 支持载入网络图片和本地图片;
  • 内存管理使用lru算法,更好的管理bitmap内存;
  • 可配置线程载入线程数量。缓存大小,缓存路径,载入显示动画等...
  • 使用xUtils高速开发框架须要有下面权限:
    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    混淆时注意事项:
  • 加入Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt
  • 不要混淆xUtils中的注解类型,加入混淆配置:-keep class * extends java.lang.annotation.Annotation { *; }
  • 对使用DbUtils模块持久化的实体类不要混淆。或者注解全部表和列名称@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx")。
  • DbUtils用法:
    DbUtils db = DbUtils.create(this);User user = new User(); //这里须要注意的是User对象必须有id属性。或者有通过@ID注解的属性user.setEmail("wyouflf@qq.com");user.setName("wyouflf");db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值...// 查找Parent entity = db.findById(Parent.class, parent.getId());List<Parent> list = db.findAll(Parent.class);//通过类型查找Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));// IS NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));// IS NOT NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffsetList<Parent> list = db.findAll(Selector.from(Parent.class).where("id" ,"<", 54).and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30)).orderBy("id").limit(pageSize).offset(pageSize * pageIndex));// op为"in"时,最后一个參数必须是数组或Iterable的实现类(比如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));// op为"between"时,最后一个參数必须是数组或Iterable的实现类(比如List等)Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")仅仅取出name列List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));...List<DbModel> dbModels = db.findDbModelAll(sql); // 自己定义sql查询db.execNonQuery(sql) // 运行自己定义sql...
    ViewUtils用法
  • 全然注解方式就能够进行UI绑定和事件绑定。
  • 无需findViewById和setClickListener等。
  • // xUtils的view注解要求必须提供id。以使代码混淆不受影响。@ViewInject(R.id.textView)TextView textView;//@ViewInject(vale=R.id.textView, parentId=R.id.parentView)//TextView textView;@ResInject(id = R.string.label, type = ResType.String)private String label;// 取消了之前用法名绑定事件的方式。使用id绑定不受混淆影响// 支持绑定多个id @OnClick({R.id.id1, R.id.id2, R.id.id3})// or @OnClick(value={R.id.id1, R.id.id2, R.id.id3}, parentId={R.id.pid1, R.id.pid2, R.id.pid3})// 很多其它事件支持參见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。@OnClick(R.id.test_button)public void testButtonClick(View v) { // 方法签名必须和接口中的要求一致 ...}...//在Activity中注入:@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ViewUtils.inject(this); //注入view和事件 ... textView.setText("some text..."); ...}//在Fragment中注入:@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.bitmap_fragment, container, false); // 载入fragment布局 ViewUtils.inject(this, view); //注入view和事件 ...}//在PreferenceFragment中注入:public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ViewUtils.inject(this, getPreferenceScreen()); //注入view和事件 ...}// 其它重载// inject(View view);// inject(Activity activity)// inject(PreferenceActivity preferenceActivity)// inject(Object handler, View view)// inject(Object handler, Activity activity)// inject(Object handler, PreferenceGroup preferenceGroup)// inject(Object handler, PreferenceActivity preferenceActivity)
    HttpUtils用法:普通get方法
    HttpUtils http = new HttpUtils();http.send(HttpRequest.HttpMethod.GET, "http://www.lidroid.com", new RequestCallBack<String>(){ @Override public void onLoading(long total, long current, boolean isUploading) { testTextView.setText(current + "/" + total); } @Override public void onSuccess(ResponseInfo<String> responseInfo) { textView.setText(responseInfo.result); } @Override public void onStart() { } @Override public void onFailure(HttpException error, String msg) { }});
    使用HttpUtils上传文件 或者 提交数据 到server(post方法)
    RequestParams params = new RequestParams();params.addHeader("name", "value");params.addQueryStringParameter("name", "value");// 仅仅包括字符串參数时默认使用BodyParamsEntity,// 相似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。params.addBodyParameter("name", "value");// 增加文件參数后默认使用MultipartEntity("multipart/form-data")。// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。// 使用params.setBodyEntity(httpEntity)可设置很多其它类型的HttpEntity(如:// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。

    // 比如发送json參数:params.setBodyEntity(new StringEntity(jsonStr,charset));params.addBodyParameter("file", new File("path"));...HttpUtils http = new HttpUtils();http.send(HttpRequest.HttpMethod.POST, "uploadUrl....", params, new RequestCallBack<String>() { @Override public void onStart() { testTextView.setText("conn..."); } @Override public void onLoading(long total, long current, boolean isUploading) { if (isUploading) { testTextView.setText("upload: " + current + "/" + total); } else { testTextView.setText("reply: " + current + "/" + total); } } @Override public void onSuccess(ResponseInfo<String> responseInfo) { testTextView.setText("reply: " + responseInfo.result); } @Override public void onFailure(HttpException error, String msg) { testTextView.setText(error.getExceptionCode() + ":" + msg); }});

    使用HttpUtils下载文件:
  • 支持断点续传,随时停止下载任务。開始任务
  • HttpUtils http = new HttpUtils();HttpHandler handler = http.download("http://apache.dataguru.cn/httpcomponents/httpclient/source/httpcomponents-client-4.2.5-src.zip", "/sdcard/httpcomponents-client-4.2.5-src.zip", true, // 假设目标文件存在,接着未完毕的部分继续下载。server不支持RANGE时将从新下载。 true, // 假设从请求返回信息中获取到文件名称。下载完毕后自己主动重命名。 new RequestCallBack<File>() { @Override public void onStart() { testTextView.setText("conn..."); } @Override public void onLoading(long total, long current, boolean isUploading) { testTextView.setText(current + "/" + total); } @Override public void onSuccess(ResponseInfo<File> responseInfo) { testTextView.setText("downloaded:" + responseInfo.result.getPath()); } @Override public void onFailure(HttpException error, String msg) { testTextView.setText(msg); }});...//调用cancel()方法停止下载handler.cancel();...
    BitmapUtils 用法
    BitmapUtils bitmapUtils = new BitmapUtils(this);// 载入网络图片bitmapUtils.display(testImageView, "http://bbs.lidroid.com/static/image/common/logo.png");// 载入本地图片(路径以/开头, 绝对路径)bitmapUtils.display(testImageView, "/sdcard/test.jpg");// 载入assets中的图片(路径以assets开头)bitmapUtils.display(testImageView, "assets/img/wallpaper.jpg");// 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和高速滑动过程中时候暂停载入图片listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener));
    输出日志 LogUtils
    // 自己主动加入TAG,格式: className.methodName(L:lineNumber)// 可设置全局的LogUtils.allowD = false。LogUtils.allowI = false...,控制是否输出log。

    // 自己定义log输出LogUtils.customLogger = new xxxLogger();LogUtils.d("wyouflf");

    xUtils介绍 -- DbUtils、ViewUtils、HttpUtils、BitmapUtils

    标签:好的   between   log   延时   影响   ann   out   pex   padding   

    小编还为您整理了以下内容,可能对您也有帮助:

    有哪些比较好的android的框架

    向你推荐个xUtils

    xUtils 包含了很多实用的android工具。

    xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...

    xUitls最低兼容android 2.2 (api level 8)

    目前xUtils主要有四大模块:

    加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;

    支持加载网络图片和本地图片;

    内存管理使用lru算法,更好的管理bitmap内存;

    可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等...

    支持同步,异步方式的请求;

    支持大文件上传,上传大文件不会oom;

    支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;

    下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;

    返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

    android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;

    新的事件绑定方式,使用混淆工具混淆后仍可正常工作;

    目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

    ViewUtils模块:

    HttpUtils模块:

    BitmapUtils模块:

    android中的orm框架,一行代码就可以进行增删改查;

    支持事务,默认关闭;

    可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);

    支持绑定外键,保存实体时外键关联实体自动保存或更新;

    自动加载外键关联实体,支持延时加载;

    支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。

    DbUtils模块:

    xutils3和xutils3什么区别

    区别如下:

    1、数据库方面,两者注解映射不同

    xUtils2下 @Table(name="stu",execAfterTableCreated ="" ),而xUtils3下直接是代替了onCreated。

    2、数据库创建和查询有改动,但基本还是相同

    xutils2中db.findFirst(Selector.from(Parent.class)。where.....而xUtils3中则是db.selector(Parent.class).where(....).findFirst();但是里面基本的条件例如where,whereBuilder等参数还是没变的。

    3、网络操作方面不同 

    xUtils3是直接x.image().bind..或者x.http().post()等取代了http.send(method,url,callback)。

    4、视图方面不同

    xutils3中@Event()代替了@onClick(),而且下面的private代替了public。

    xutils3和xutils3什么区别

    区别如下:

    1、数据库方面,两者注解映射不同

    xUtils2下 @Table(name="stu",execAfterTableCreated ="" ),而xUtils3下直接是代替了onCreated。

    2、数据库创建和查询有改动,但基本还是相同

    xutils2中db.findFirst(Selector.from(Parent.class)。where.....而xUtils3中则是db.selector(Parent.class).where(....).findFirst();但是里面基本的条件例如where,whereBuilder等参数还是没变的。

    3、网络操作方面不同 

    xUtils3是直接x.image().bind..或者x.http().post()等取代了http.send(method,url,callback)。

    4、视图方面不同

    xutils3中@Event()代替了@onClick(),而且下面的private代替了public。

    安卓开发Xutils.Bitmap怎么实现的三级缓存

    网络缓存
    网络拉取图片严格来讲不能称之为缓存,实质上就是下载url对应的图片,我们这里姑且把它看作是缓存的一种。仿照BitmapUtil中的display方法,我自己定制的CustomBitmapUtils也定义这个方法,根据传入的url,将图片设置到ivPic控件上。

    [java] view plain copy
    public void display(ImageView ivPic, String url) {

    }
    定义网络缓存的工具类,在访问网络的时候,我使用了AsyncTask来实现,在AsyncTask的doInBackGround方法里下载图片,然后将 图片设置给ivPic控件,AsyncTask有三个泛型,其中第一个泛型是执行异步任务的时候,通过execute传过来的参数,第二个泛型是更新的进度,第三个泛型是异步任务执行完成之后,返回来的结果,我们这里返回一个Bitmap。具体的下载实现代码如下:

    [java] view plain copy
    <pre name="code" class="java">/**
    * 网络缓存的工具类
    *
    * @author ZHY
    *
    */
    public class NetCacheUtils {

    private LocalCacheUtils localCacheUtils;
    private MemoryCacheUtils memoryCacheUtils;

    public NetCacheUtils() {
    localCacheUtils = new LocalCacheUtils();
    memoryCacheUtils = new MemoryCacheUtils();
    }

    /**
    * 从网络下载图片
    *
    * @param ivPic
    * @param url
    */
    public void getBitmapFromNet(ImageView ivPic, String url) {
    // 访问网络的操作一定要在子线程中进行,采用异步任务实现
    MyAsyncTask task = new MyAsyncTask();
    task.execute(ivPic, url);

    }

    /**
    * 第一个泛型--异步任务执行的时候,通过execute传过来的参数; 第二个泛型--更新进度; 第三个泛型--异步任务执行以后返回的结果
    *
    * @author ZHY
    *
    */
    private class MyAsyncTask extends AsyncTask<Object, Void, Bitmap> {

    private ImageView ivPic;
    private String url;

    // 耗时任务执行之前 --主线程
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    }

    // 后台执行的任务
    @Override
    protected Bitmap doInBackground(Object... params) {
    // 执行异步任务的时候,将URL传过来
    ivPic = (ImageView) params[0];
    url = (String) params[1];
    Bitmap bitmap = downloadBitmap(url);
    // 为了保证ImageView控件和URL一一对应,给ImageView设定一个标记
    ivPic.setTag(url);// 关联ivPic和URL

    return bitmap;
    }

    // 更新进度 --主线程
    @Override
    protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
    }

    // 耗时任务执行之后--主线程
    @Override
    protected void onPostExecute(Bitmap result) {
    String mCurrentUrl = (String) ivPic.getTag();
    if (url.equals(mCurrentUrl)) {
    ivPic.setImageBitmap(result);
    System.out.println("从网络获取图片");
    // 从网络加载完之后,将图片保存到本地SD卡一份,保存到内存中一份
    localCacheUtils.setBitmap2Local(url, result);
    // 从网络加载完之后,将图片保存到本地SD卡一份,保存到内存中一份
    memoryCacheUtils.setBitmap2Memory(url, result);

    }
    }
    }

    /**
    * 下载网络图片
    *
    * @param url
    * @return
    */
    private Bitmap downloadBitmap(String url) {
    HttpURLConnection conn = null;
    try {
    URL mURL = new URL(url);
    // 打开HttpURLConnection连接
    conn = (HttpURLConnection) mURL.openConnection();
    // 设置参数
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);
    conn.setRequestMethod("GET");
    // 开启连接
    conn.connect();

    // 获得响应码
    int code = conn.getResponseCode();
    if (code == 200) {
    // 相应成功,获得网络返回来的输入流
    InputStream is = conn.getInputStream();

    // 图片的输入流获取成功之后,设置图片的压缩参数,将图片进行压缩
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 2;// 将图片的宽高都压缩为原来的一半,在开发中此参数需要根据图片展示的大小来确定,否则可能展示的不正常
    options.inPreferredConfig = Bitmap.Config.RGB_565;// 这个压缩的最小

    // Bitmap bitmap = BitmapFactory.decodeStream(is);
    Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);// 经过压缩的图片

    return bitmap;
    }

    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // 断开连接
    conn.disconnect();
    }

    return null;
    }
    }

    安卓开发Xutils.Bitmap怎么实现的三级缓存

    网络缓存
    网络拉取图片严格来讲不能称之为缓存,实质上就是下载url对应的图片,我们这里姑且把它看作是缓存的一种。仿照BitmapUtil中的display方法,我自己定制的CustomBitmapUtils也定义这个方法,根据传入的url,将图片设置到ivPic控件上。

    [java] view plain copy
    public void display(ImageView ivPic, String url) {

    }
    定义网络缓存的工具类,在访问网络的时候,我使用了AsyncTask来实现,在AsyncTask的doInBackGround方法里下载图片,然后将 图片设置给ivPic控件,AsyncTask有三个泛型,其中第一个泛型是执行异步任务的时候,通过execute传过来的参数,第二个泛型是更新的进度,第三个泛型是异步任务执行完成之后,返回来的结果,我们这里返回一个Bitmap。具体的下载实现代码如下:

    [java] view plain copy
    <pre name="code" class="java">/**
    * 网络缓存的工具类
    *
    * @author ZHY
    *
    */
    public class NetCacheUtils {

    private LocalCacheUtils localCacheUtils;
    private MemoryCacheUtils memoryCacheUtils;

    public NetCacheUtils() {
    localCacheUtils = new LocalCacheUtils();
    memoryCacheUtils = new MemoryCacheUtils();
    }

    /**
    * 从网络下载图片
    *
    * @param ivPic
    * @param url
    */
    public void getBitmapFromNet(ImageView ivPic, String url) {
    // 访问网络的操作一定要在子线程中进行,采用异步任务实现
    MyAsyncTask task = new MyAsyncTask();
    task.execute(ivPic, url);

    }

    /**
    * 第一个泛型--异步任务执行的时候,通过execute传过来的参数; 第二个泛型--更新进度; 第三个泛型--异步任务执行以后返回的结果
    *
    * @author ZHY
    *
    */
    private class MyAsyncTask extends AsyncTask<Object, Void, Bitmap> {

    private ImageView ivPic;
    private String url;

    // 耗时任务执行之前 --主线程
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    }

    // 后台执行的任务
    @Override
    protected Bitmap doInBackground(Object... params) {
    // 执行异步任务的时候,将URL传过来
    ivPic = (ImageView) params[0];
    url = (String) params[1];
    Bitmap bitmap = downloadBitmap(url);
    // 为了保证ImageView控件和URL一一对应,给ImageView设定一个标记
    ivPic.setTag(url);// 关联ivPic和URL

    return bitmap;
    }

    // 更新进度 --主线程
    @Override
    protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
    }

    // 耗时任务执行之后--主线程
    @Override
    protected void onPostExecute(Bitmap result) {
    String mCurrentUrl = (String) ivPic.getTag();
    if (url.equals(mCurrentUrl)) {
    ivPic.setImageBitmap(result);
    System.out.println("从网络获取图片");
    // 从网络加载完之后,将图片保存到本地SD卡一份,保存到内存中一份
    localCacheUtils.setBitmap2Local(url, result);
    // 从网络加载完之后,将图片保存到本地SD卡一份,保存到内存中一份
    memoryCacheUtils.setBitmap2Memory(url, result);

    }
    }
    }

    /**
    * 下载网络图片
    *
    * @param url
    * @return
    */
    private Bitmap downloadBitmap(String url) {
    HttpURLConnection conn = null;
    try {
    URL mURL = new URL(url);
    // 打开HttpURLConnection连接
    conn = (HttpURLConnection) mURL.openConnection();
    // 设置参数
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);
    conn.setRequestMethod("GET");
    // 开启连接
    conn.connect();

    // 获得响应码
    int code = conn.getResponseCode();
    if (code == 200) {
    // 相应成功,获得网络返回来的输入流
    InputStream is = conn.getInputStream();

    // 图片的输入流获取成功之后,设置图片的压缩参数,将图片进行压缩
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 2;// 将图片的宽高都压缩为原来的一半,在开发中此参数需要根据图片展示的大小来确定,否则可能展示的不正常
    options.inPreferredConfig = Bitmap.Config.RGB_565;// 这个压缩的最小

    // Bitmap bitmap = BitmapFactory.decodeStream(is);
    Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);// 经过压缩的图片

    return bitmap;
    }

    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    // 断开连接
    conn.disconnect();
    }

    return null;
    }
    }

    android xutils 怎么定义dialog

    做Android应用中,最缺少不了的就是自定义Dialog,对于系统默认提供的Dialog样式,一般都不复合应用的样式。
    自定义Dialog需要3步骤即可:
    1、主要的重写Dialog的Java类
    2、自定义布局文件、并设置Dialog Theme,在style.xml文件中加一个即可
    3、使用方法

    一、创建CustomPopDialog2.java类
    import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.WindowManager.LayoutParams;
    import android.widget.ImageView;

    /**
    * 该自定义Dialog应用在:弹出框居中显示图片,点击其他区域自动关闭Dialog
    *
    * @author SHANHY(365384722@QQ.COM)
    * @date 2015年12月4日
    */
    public class CustomPopDialog2 extends Dialog {

    public CustomPopDialog2(Context context) {
    super(context);
    }

    public CustomPopDialog2(Context context, int theme) {
    super(context, theme);
    }

    public static class Builder {
    private Context context;
    private Bitmap image;

    public Builder(Context context) {
    this.context = context;
    }

    public Bitmap getImage() {
    return image;
    }

    public void setImage(Bitmap image) {
    this.image = image;
    }

    public CustomPopDialog2 create() {
    LayoutInflater inflater = (LayoutInflater) context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final CustomPopDialog2 dialog = new CustomPopDialog2(context,R.style.Dialog);
    View layout = inflater.inflate(R.layout.dialog_share_qrcode, null);
    dialog.addContentView(layout, new LayoutParams(
    android.view.ViewGroup.LayoutParams.WRAP_CONTENT
    , android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
    dialog.setContentView(layout);
    ImageView img = (ImageView)layout.findViewById(R.id.img_qrcode);
    img.setImageBitmap(getImage());
    return dialog;
    }
    }
    }

    这里简单说明下,我们自定义Dialog需要准备一个自己的View布局文件,主要关注create()方法即可,本例中就是直接显示一个图片。

    二、自定义View的布局文件、并在style.xml中添加theme
    <?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:gravity="center"
    android:id="@+id/rootLayout">

    <ImageView
    android:id="@+id/img_qrcode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="二维码" />

    </LinearLayout>
    <style name="Dialog" parent="android:style/Theme.Dialog">
    <item name="android:background">#00000000</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    </style>

    三、使用自定义的Dialog
    Bitmap bitmap = xxxxx;// 这里是获取图片Bitmap,也可以传入其他参数到Dialog中
    CustomPopDialog2.Builder dialogBuild = new CustomPopDialog2.Builder(context);
    dialogBuild.setImage(bitmap);
    CustomPopDialog2 dialog = dialogBuild.create();
    dialog.setCanceledOnTouchOutside(true);// 点击外部区域关闭
    dialog.show();

    android xutils 怎么定义dialog

    做Android应用中,最缺少不了的就是自定义Dialog,对于系统默认提供的Dialog样式,一般都不复合应用的样式。
    自定义Dialog需要3步骤即可:
    1、主要的重写Dialog的Java类
    2、自定义布局文件、并设置Dialog Theme,在style.xml文件中加一个即可
    3、使用方法

    一、创建CustomPopDialog2.java类
    import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.WindowManager.LayoutParams;
    import android.widget.ImageView;

    /**
    * 该自定义Dialog应用在:弹出框居中显示图片,点击其他区域自动关闭Dialog
    *
    * @author SHANHY(365384722@QQ.COM)
    * @date 2015年12月4日
    */
    public class CustomPopDialog2 extends Dialog {

    public CustomPopDialog2(Context context) {
    super(context);
    }

    public CustomPopDialog2(Context context, int theme) {
    super(context, theme);
    }

    public static class Builder {
    private Context context;
    private Bitmap image;

    public Builder(Context context) {
    this.context = context;
    }

    public Bitmap getImage() {
    return image;
    }

    public void setImage(Bitmap image) {
    this.image = image;
    }

    public CustomPopDialog2 create() {
    LayoutInflater inflater = (LayoutInflater) context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final CustomPopDialog2 dialog = new CustomPopDialog2(context,R.style.Dialog);
    View layout = inflater.inflate(R.layout.dialog_share_qrcode, null);
    dialog.addContentView(layout, new LayoutParams(
    android.view.ViewGroup.LayoutParams.WRAP_CONTENT
    , android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
    dialog.setContentView(layout);
    ImageView img = (ImageView)layout.findViewById(R.id.img_qrcode);
    img.setImageBitmap(getImage());
    return dialog;
    }
    }
    }

    这里简单说明下,我们自定义Dialog需要准备一个自己的View布局文件,主要关注create()方法即可,本例中就是直接显示一个图片。

    二、自定义View的布局文件、并在style.xml中添加theme
    <?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:gravity="center"
    android:id="@+id/rootLayout">

    <ImageView
    android:id="@+id/img_qrcode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="二维码" />

    </LinearLayout>
    <style name="Dialog" parent="android:style/Theme.Dialog">
    <item name="android:background">#00000000</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    </style>

    三、使用自定义的Dialog
    Bitmap bitmap = xxxxx;// 这里是获取图片Bitmap,也可以传入其他参数到Dialog中
    CustomPopDialog2.Builder dialogBuild = new CustomPopDialog2.Builder(context);
    dialogBuild.setImage(bitmap);
    CustomPopDialog2 dialog = dialogBuild.create();
    dialog.setCanceledOnTouchOutside(true);// 点击外部区域关闭
    dialog.show();

    求android gridview 加载 网络图片的适配器

    用自定义Adapter做适配器,然后用ImagerLoader加载网络数据,ImageLoader会自动加载网络数据的。一行代码搞定,建议查看ImagerLoader官网就用GridView的例子

    OkHttp和XUtils怎么调用WebService-CSDN论坛

    需要你自己封装soap协议,然后post出去,返回结果要解析xml,使用urlconnection也可以。要先理解soap协议的内容,soap协议是用xml封装的,里面包含你调用的方法名和参数。

    显示全文