xUtils:当前比较火的框架,并且用处也是比较多。
一.目前xUtils主要有四大模块:
DbUtils模块:用于 数据库的操作,也是需要注解方式指定表名和列名;
ViewUtils模块:注解方式就可以进行UI,资源和事件绑定;
HttpUtils模块:用于网络数据的请求;
BitmapUtils模块:用于图片的下载和绑定视图;
本文主要讲解xUtils中的图片下载和绑定操作。
使用:
AndroidStudio使用xUtils之前添加依赖就可以了:
compile ‘org.xutils:xutils:3.3.38’
GitHub中的源码地址: https://github.com/wyouflf/xUtils3
二.使用示例
最简单的使用示例。其实就一句话。
(一)添加依赖语句
compile 'org.xutils:xutils:3.3.38'
- 1
- 1
(二)添加权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(三)在自己的Application中的onCreate方法里注册xutils
x.Ext.init(this);
这里要记得在AndroidManifest中添加Application中的name。
(四)设计布局activity_main.xml文件
<?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"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网络图片" /> <ImageView android:id="@+id/iv1" android:layout_width="300dp" android:layout_height="300dp" android:layout_margin="10dp" android:scaleType="fitXY" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="本地图片" /> <ImageView android:id="@+id/iv2" android:layout_width="300dp" android:layout_height="300dp" android:layout_margin="10dp" android:scaleType="fitXY" /></LinearLayout>
(五)设计java代码
package fuxi.xutils;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;import org.xutils.x;import java.io.File;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = (ImageView) findViewById(R.id.iv1); ImageView imageView2 = (ImageView) findViewById(R.id.iv2); //xUtils绑定网络图片 //第一个参数是ImageView对象 //第二个参数是URL字符串地址 x.image().bind(imageView, "http://p0.so.qhmsg.com/sdr/600_900_/t01d43698fbeca29695.jpg"); //xUtils绑定本地图片 //第一个参数是ImageView对象 //第二个参数是URL字符串地址,这里非要转换为File后在获取地址,直接使用"mnt/sdcard/a1.jpg"不行! x.image().bind(imageView2, new File("mnt/sdcard/a1.jpg").getAbsolutePath()); //一般的如果是绑定本地图片,是不会使用框架的,下面这个语句就可以了 // imageView2.setImageURI(Uri.fromFile(new File("mnt/sdcard/a1.jpg"))); }}
程序运行后的界面:
其实这里应用的话,一般是不用来绑定本地图片的,因为呢本地图片不需要子线程,也是一句话搞定。如果是加载网络图片还有有点用的,毕竟如果自己实现网络图片的绑定还要去做异步任务的下载。
三.复杂一点的使用示例
设置图片的各种属性的设置,这里只做 Java代码的设计,前需要的步骤和上面程序是一样的。布局文件也是用上面的,把两个TextView去掉就可以。
public class LoadImageView extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = (ImageView) findViewById(R.id.iv1); ImageView imageView2 = (ImageView) findViewById(R.id.iv2); //设置图片属性的options ImageOptions options = new ImageOptions.Builder() //设置图片的大小 .setSize(300, 300) // 如果ImageView的大小不是定义为wrap_content, 不要crop. .setCrop(true) // 加载中或错误图片的ScaleType //.setPlaceholderScaleType(ImageView.ScaleType.MATRIX) .setImageScaleType(ImageView.ScaleType.CENTER_CROP) //设置加载过程中的图片 .setLoadingDrawableId(R.mipmap.ic_launcher) //设置加载失败后的图片 .setFailureDrawableId(R.mipmap.ic_launcher) //设置使用缓存 .setUseMemCache(true) //设置支持gif .setIgnoreGif(false) //设置显示圆形图片 .setCircular(true).build(); x.image().bind(imageView, "http://p4.so.qhmsg.com/sdr/600_900_/t01f4e6c53f0e23d459.jpg", options); //设置第二张图片属性的options ImageOptions options2 = new ImageOptions.Builder() //设置图片的大小 .setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120)) //设置边角的圆形 .setRadius(DensityUtil.dip2px(5)) //创建 .build(); x.image().bind(imageView2, "http://p2.so.qhmsg.com/sdr/599_900_/t019e91b7618003e862.jpg", options2); }}
程序运行后的界面:
上面一样是显示两个图片,一个圆形的图片,一个简单设置显示的图片。