AsyncTask封装工具类
public class MyTask extends AsyncTask<String,Void,String> {
public Icallbacks icallbacks;
public MyTask(Icallbacks icallbacks) {
this.icallbacks = icallbacks;
}
@Override
protected String doInBackground(String... strings) {
StringBuilder builder=new StringBuilder();
try {
URL url=new URL(strings[0]);
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
if (conn.getResponseCode()==200){
//5.获取数据
InputStream inputStream = conn.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String str;
while ((str=reader.readLine())!=null){
builder.append(str);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return builder.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
icallbacks.getJsonData(s);
}
//定义一个接口
public interface Icallbacks{
public void getJsonData(String jsonstr);
}
}
调用时:
//请求数据
MyTask task=new MyTask(new MyTask.Icallbacks() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
UserBean userBean = gson.fromJson(jsonStr, UserBean.class);
newslist.clear();//清空集合
newslist.addAll( userBean.getNewslist());//添加数据到集合
setAdapter();
pull_listview.onRefreshComplete();//关闭xlistview头尾布局
}
});
task.execute(url);
Imagerloader封装工具类:
//初始化
public static void initImagerloader(Context context){
File cacheDir= new File(Environment.getExternalStorageDirectory().getPath()+"/aaa");//自定义 sd卡的缓存路径
//第一步:对ImageLoader进行初使化
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(320, 450) // default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(10 * 1024 * 1024)) //可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
.memoryCacheSizePercentage(13) // default
.diskCache(new UnlimitedDiscCache(cacheDir)) // 磁盘缓存 --default 可以自定义缓存路径
.diskCacheSize(20 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
.diskCacheFileCount(100) // 可以缓存的文件数量
// default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(context)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs() // 打印debug log
.build();
ImageLoader.getInstance().init(configuration);
}
public static DisplayImageOptions getImageOptin(Context context){
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式===imageView,,ScaleType
.displayer(new RoundedBitmapDisplayer(50))//设置图片圆角显示 弧度
.build();
return options;
}
初始化Imagerloader:创建一个类继承Application,还需要在manifest.xml文件中添加name属性
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化
MyImageLoder.initImagerloader(this);
}
}
在适配器使用时
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), hoder.img,MyImageLoder.getImageOptin(context));