zoukankan      html  css  js  c++  java
  • 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使用手册(二) - 数据库操作

  • 相关阅读:
    二叉树的建树,按层遍历,结点总数,页结点,深度以及三序非递归遍历二叉树,建立中序线索二叉树
    志愿者选拔(单调队列)
    重建二叉树(中后序求前序)
    New Year Table(几何)
    Hopscotch(细节)
    红黑树(中序二叉树)
    Linux-awk命令详解
    Python--常用模块
    Python--re模块
    Python--模块与包
  • 原文地址:https://www.cnblogs.com/steffen/p/6594958.html
Copyright © 2011-2022 走看看