初步使用universal-image-loader
来源:互联网 发布:淘宝助理安全验证 编辑:程序博客网 时间:2024/05/16 09:13
简介
universal-image-loader是一个开源的Android异步加载图片的库,提供一个可重复使用的仪器为异步图像加载,缓存和显示。具体的介绍可以自行搜索,也可以直接看该项目在github上的wiki。
由于最近在关注一个Android图片加载的问题,就看下这个库具体要如何使用。
使用方法
1.引入
目前我使用的android开发工具是Android Studio,要使用universal-image-loader只要将相应的jar包下载并导入到工程中即可。具体的导入步骤,可以参见文章《Android Studio导入第三方的jar包》,记录的还算详细。
不过,目前android开发都推荐使用android studio,所以依赖管理都会使用gradle。在gradle引入universal-image-loader很简单,只要在项目的配置文件build.gradle引入相应版本还就可以。
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
2.权限问题
要使用universal-image-loader一般需要额外给工程加2个权限:访问网络和写入SD卡。想想也知道,要访问网络图片肯定需要网络,如果图片缓存一般情况也都是缓存到SD卡的。
给工程加权限肯定需要修改AndroidManifest.xml文件。
<uses-permission android:name="android.permission.INTERNET" ></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
3.UI
因为是只是初步接触,所以布局就不搞的非擦汗那个复杂,只是放一个ImageView用以显示图片。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/imageView" android:layout_gravity="center_horizontal|top" /></FrameLayout>
4.注册
通过查询官方的文档,在使用universal-image-loader时,一般需要自己定义一个Application,然后在该Application中完成universal-image-loader初始化操作。所以需要自己定义一个MyApplication,并且将该类在AndroidManifest.xml引入,不然的话android启动不会调用该类。
首先,定义MyApplication类,并继承Application。
package mungo.org.myapplication;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by Administrator on 2015/6/9. */public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //ImageLoader ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); //Initialize ImageLoader with configuration. ImageLoader.getInstance().init(configuration); }}
然后修改AndroidManifest.xml中application节点,添加
android:name=".MyApplication"
这里需要注意的是,MyApplication类的路径需要在AndroidManifest.xml定义的package下面,不然会找不到。
package="mungo.org.myapplication" >
5.使用
这个时候,配置的工作基本就完成了。剩下的就是如何使用universal-image-loader加载网络图片,并且显示在之前定义的布局文件中的ImageView上了。
可以使用ImageLoader.getInstance().loadImage()方法,loadImage方法有一系列的重载方法。这里就选用比较简单一种,至于其他的,在实际应用中慢慢接触吧,算是抛砖引玉吧。
loadImage需要传入图片url和一个ImageLoadingListener实例即可。
ImageLoader.getInstance().loadImage(imageUrl,new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); mImageView.setImageBitmap(loadedImage); } });
下面是MainActivity完整代码:
package mungo.org.myapplication;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;public class MainActivity extends Activity { private static final String LOG_TAG = MainActivity.class.getSimpleName(); ImageView mImageView; String imageUrl = "http://img5.imgtn.bdimg.com/it/u=747474479,3247936386&fm=21&gp=0.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e(LOG_TAG, "onCreate"); mImageView= (ImageView) findViewById(R.id.imageView); ImageLoader.getInstance().loadImage(imageUrl,new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); mImageView.setImageBitmap(loadedImage); } }); } @Override protected void onStart() { Log.e(LOG_TAG, "onStart"); super.onStart(); } @Override protected void onResume() { Log.e(LOG_TAG, "onResume"); super.onResume(); } @Override protected void onPause() { Log.e(LOG_TAG, "onPause"); super.onPause(); } @Override protected void onStop() { Log.e(LOG_TAG, "onStop"); super.onStop(); } @Override protected void onDestroy() { Log.e(LOG_TAG, "onDestroy "); super.onDestroy(); }}
6.效果
以上代码就全部完成,看下效果。
总结
这里只是对universal-image-loader做了最简单的使用介绍,他的功能远不止这些,而且在实际运用中代码可能也不会这么写,而是采用universal-image-loader框架本身更为高效的做法。同时,这里也没涉及到框架的缓存。等等这些只能在使用中慢慢熟悉了。
- 初步使用universal-image-loader
- Universal-Image-Loader 使用
- Android Universal Image Loader 使用
- universal-image-loader 使用思路
- Universal Image Loader使用文档
- Universal-Image-Loader的使用
- Android-Universal-Image-Loader 使用
- Universal-Image-Loader 使用详解
- Universal-Image-Loader使用小记
- universal-image-loader简单使用
- Universal-Image-Loader的使用
- Universal-Image-Loader的使用
- universal-image-loader使用参考
- Universal-Image-Loader使用(一)
- Android Universal-Image-Loader使用
- Android-Universal-Image-Loader使用
- android-universal-image-loader的使用
- Universal–Image–Loader 使用
- 5.MFC运行时动态创建
- 在centos上手动安装opencv
- CHMmaker算法分析
- Fragment的使用
- 安卓app设计规范整理和Android APP设计篇
- 初步使用universal-image-loader
- Java加密技术(四)——非对称加密算法RSA
- 再见,CSDN
- Android-->RecyclerView的上手教程(模仿画廊效果)
- linux合并文件并替换
- ubuntu 设置静态IP
- Server2008 创建多个备份计划
- 数据驱动编程之表驱动法
- json解析