https://github.com/wyouflf/xUtilsxUtils简单介绍
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />混淆时注意事项:
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用法
// 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)。使用HttpUtils下载文件:// 比如发送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 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封装的,里面包含你调用的方法名和参数。