Android xUtils3.0使用手册(一)- 基础功能使用

xUtils3 其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是苦于没有完整的使用手册,下面是使用中的一些总结,不断完善。

xUtils 版本3.3.36
jar包下载地址

http://files.cnblogs.com/files/steffen/xUtils-3.3.36.zip

GitHub项目地址

https://github.com/wyouflf/xUtils3

 

 

 

 

 

使用前配置

1 <uses-permission android:name="android.permission.INTERNET" /> 2 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

导入文件

方法1:导入jar包文件;

方法2:在gradle中添加依赖:

dependencies {
    compile 'org.xutils:xutils:3.3.44'
}


 

1. xUtils中的IOC框架

使用xUtils的第一步就是先创建自己的Application类,在MyApplication中初始化xUtils,代码如下:

1 public class MyApplication extends Application {
2  @Override 3 public void onCreate() { 4 super.onCreate(); 5 x.Ext.init(this); //xUtils初始化 6  } 7 }

在AndroidManifest.xml的application标签中添加如下代码:    

1 android:name=".MyApplication" 

这样初始化就算完成了。

 

例:下面使用IOC框架的代码如下:

 1 import org.xutils.view.annotation.ContentView;
 2 import org.xutils.view.annotation.Event;  3 import org.xutils.view.annotation.ViewInject;  4 import org.xutils.x;  5 // 获取Activity布局  6 @ContentView(R.layout.activity_main)  7 public class MainActivity extends Activity {  8 // 获取控件ID  9 @ViewInject(R.id.mybut) 10 private Button mybut; 11 12  @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 x.view().inject(this); // 初始化x.view(), 否则ID获取失败 16  } 17 18 /** 添加控件监听事件 */ 19 @Event(value = {R.id.mybut, R.id.myradio},type = View.OnClickListener.class) 20 private void onButtonClick(View v){ 21 switch (v.getId()) { 22 case R.id.mybut: 23 Toast.makeText(this,"我是xUtils的IOC功能", Toast.LENGTH_SHORT).show(); 24 break; 25 case R.id.myradio: 26 break; 27  } 28  } 29 } 

 注释:监听事件中,@Event, value后面是 Array,当多个ID时{R.id.btn1, R.id.btn2, R.id.btn3, ···}; 当只有一个ID时可直接写 value=R.id.btn。

当有多个ID时,要保证后面事件的类型(type)要是一致的,否则要在不同的方法中实现。

另:点击事件方法名一定要包含onClick或者onEven。

 

2. 网络请求

RequestParams 参数:

RequestParams params = new RequestParams(url);

.addQueryStringParamter("wd", "xUtils"); // 适用于GET请求方式;类似于字符串拼接 http://xxx/x?wd=xUtils。 

.addBodyParameter("wd", "xUtils"); // 适用于POST请求方式;添加到Body体的参数。

 

2.1 GET/POST请求

    get和post请求并无太大区别,主要区别在于参数的添加方法上。

 GET请求POST请求
请求参数添加:  .addQueryStringParamter("wd", "xUtils");  .addBodyParameter("wd", "xUtils");
请求的方法(带缓冲):  x.http().get(params,  new Callback.CommonCallback<String>() { });      x.http().post(params,  new Callback.CommonCallback<String>() { });   
请求的方法(带缓冲):  x.http().get(params,  new Callback.CacheCallback<String>() { });      x.http().post(params,  new Callback.CacheCallback<String>() { });   
 
 
 
2.1.1 无缓存请求(以post为例)
 1 RequestParams params = new RequestParams("http://xxx.com/xx");
 2 x.http().post(params,  new Callback.CommonCallback<String>() { 
 3         @Override
 4         public void onSuccess(String result) {
 5             // 请求成功后,返回结果
 6         }
 7         @Override     
 8         public void onError(Throwable ex, boolean isOnCallback) {
 9             // 请求失败后返回结果
10             if (!isNetworkConnections() || ex instanceof HttpException) {
11                 // 网络错误
12             } else {
13                 // 其他请求错误
14         }
15         @Override     
16         public void onCancelled(Callback.CancelledException cex) {
17             // 中断请求
18         }
19         @Override     
20         public void onFinished() {
21             // 请求结束(必调用)
22         } 
23     }
24 );
25 /**
26  * @return 网络是否连接 true:有网络,false:无网络
27  */
28 private boolean isNetworkConnections() {
29     ConnectivityManager con = (ConnectivityManager) x.app().getSystemService(Context.CONNECTIVITY_SERVICE);
30     boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected();
31     boolean internet = con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
32     return (wifi || internet);
33 }

 

2.1.2 有缓存请求(以POST为例)
 1 RequestParams params = new RequestParams("http://xxx.com/xx");
 2 x.http().post(params,  new Callback.CacheCallback<String>() { 
 3         @Override
 4         public void onSuccess(String result) {
 5             // 请求成功后,返回结果
 6         }
 7         @Override
 8         public boolean onCache(String result) {
 9             // 此方法为本地加载回调方法,本地没有数据则不会调用此方法
10             // @param result 缓存中得到的数据
11             // @return true 如果缓存中有数据就不再进行网络请求
12             // false 得到缓存数据后仍进行网络请求
13             return ture;
14         }
15         @Override     
16         public void onError(Throwable ex, boolean isOnCallback) {
17             // 请求失败后返回结果
18             if (!isNetworkConnections() || ex instanceof HttpException) {
19                 // 网络错误
20             } else {
21                 // 其他请求错误
22         }
23         @Override     
24         public void onCancelled(Callback.CancelledException cex) {
25             // 中断请求
26         }
27         @Override     
28         public void onFinished() {
29             // 请求结束(必调用)
30         } 
31     }
32 );    


 

3. 图片加载

3.1 普通图片加载

最简单的加载方式:

x.image().bind(image, "http://pic6.nipic.com/20100418/4581549_084724004690_2.jpg");

当然我们也可以设置一些属性:

1 ImageOptions imageOptions = new ImageOptions.Builder()
2                     .setSize(120, 120)
3                     .setRadius(DensityUtil.dip2px(5))
4                     .setCrop(true)
5                     .setImageScaleType(ImageView.ScaleType.CENTER_CROP)
6                     .setLoadingDrawableId(R.mipmap.ic_launcher)
7                     .setFailureDrawableId(R.mipmap.ic_launcher)
8                     .build(); 
9 x.image().bind(image, "http://pic6.nipic.com/20100418/4581549_084724004690_2.jpg",imageOptions);

 

3.2 圆形图片加载

ImageOptions options = new ImageOptions.Builder()
                .setLoadingDrawableId(R.mipmap.ic_launcher)
                .setFailureDrawableId(R.mipmap.ic_launcher)
                .setUseMemCache(true)
                .setCircular(true) // 设置成圆形图片
                .setFadeIn(true) //淡入效果
                .setImageScaleType(ImageView.ScaleType.FIT_CENTER)
                .build();

 注:圆形图片加载options的设置对本地图片无效。

3.3 GIF图片加载

ImageOptions options = new ImageOptions.Builder()
                .setLoadingDrawableId(R.mipmap.ic_launcher)
                .setFailureDrawableId(R.mipmap.ic_launcher)
                .setUseMemCache(true)
                .setIgnoreGif(true) // 允许加载GIF图片 .setFadeIn(true) //淡入效果  .setImageScaleType(ImageView.ScaleType.FIT_CENTER) .build();

3.4 ImageOptions属性

.setFadeIn(true); //淡入效果

.setCircular(true); //设置图片显示为圆形

.setSquare(true); //设置图片显示为正方形

.setCrop(true).setSize(200,200); //设置大小

.setAnimation(animation); //设置动画

.setFailureDrawable(Drawable failureDrawable); //设置加载失败的动画

.setFailureDrawableId(int failureDrawable); //以资源id设置加载失败的动画

.setLoadingDrawable(Drawable loadingDrawable); //设置加载中的动画

.setLoadingDrawableId(int loadingDrawable); //以资源id设置加载中的动画

.setIgnoreGif(false); //忽略Gif图片

.setParamsBuilder(ParamsBuilder paramsBuilder); //在网络请求中添加一些参数

.setRaduis(int raduis); //设置拐角弧度

.setUseMemCache(true); //设置使用MemCache,默认true

 

4. 相关资料

☞  Android xUtils3.0使用手册(二) - 数据库操作

 

转载于:https://www.cnblogs.com/steffen/p/6594958.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xUtils快速使用说明 导入依赖 使用Gradle构建时添加一下依赖即可: javascript compile 'org.xutils:xutils:3.3.22' 如果使用eclipse可以 点击这里下载aar文件, 然后用zip解压, 取出jar包和so文件. 添加配置混淆设置 region for xUtils -keepattributes Signature,Annotation -keep public class org.xutils.** { public protected ; } -keep public interface org.xutils.* { public protected ; } -keepclassmembers class * extends org.xutils.* { public protected ; } -keepclassmembers @org.xutils.db.annotation. class * {;} -keepclassmembers @org.xutils.http.annotation. class * {*;} -keepclassmembers class * { @org.xutils.view.annotation.Event ; } end region 配置权限 需要的权限 xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 初始化 如果为初始化会报 RuntimeException: "please invoke x.Ext.init(app) on Application#onCreate() and register your Application in manifest." 在AndroidManifest.xml中注册自定义Application, 之后加入下面的代码. java // 在application的onCreate中初始化 @Override public void onCreate() { super.onCreate(); x.Ext.init(this); // 这一步之后, 我们就可以在任何地方使用x.app()来获取Application的实例了. x.Ext.setDebug(true); // 是否输出debug日志 ... } 现在可以开始使用xUtils了 常用的API可以参考 README 接下来我们较为详细的介绍没一个模块的api和特性.
Android xUtils3 是一个非常方便的 Android 开发工具包,其中包含了许多方便实用的功能,例如网络请求、图片加载等。下面是使用 xUtils3 获取网络图片的示例代码: 1. 在 build.gradle 中添加 xUtils3 的依赖: ```groovy dependencies { implementation 'org.xutils:xutils:3.5.0' } ``` 2. 在 AndroidManifest.xml 中添加网络权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 3. 在代码中使用 xUtils3 获取网络图片: ```java ImageView imageView = findViewById(R.id.image_view); String imageUrl = "http://example.com/image.jpg"; x.image().bind(imageView, imageUrl, new Callback.CommonCallback<Drawable>() { @Override public void onSuccess(Drawable result) { // 图片加载成功 } @Override public void onError(Throwable ex, boolean isOnCallback) { // 图片加载失败 } @Override public void onCancelled(CancelledException cex) { // 图片加载被取消 } @Override public void onFinished() { // 图片加载完成 } }); ``` 上面的代码中,我们通过 x.image().bind() 方法来获取网络图片。第一个参数是 ImageView 对象,第二个参数是图片的 URL,第三个参数是一个 Callback,用于监听图片加载的状态。 其中,onSuccess() 方法表示图片加载成功,onError() 方法表示图片加载失败,onCancelled() 方法表示图片加载被取消,onFinished() 方法表示图片加载完成。在实际使用中,我们通常只需要实现 onSuccess() 方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值