目前xUtils已经发布到xUtils3,所以,我们就按照xUtils3的规范来开发。xUtils系列框架提供的功能主要有四大模块,ViewUtils模块、BitmapUtils模块、DbUtils模块、HttpUtils模块。本文主要介绍ViewUtils的使用

一、使用前配置。

使用Android Studio开发时,我们需要在build.gradle文件中添加依赖:

compile 'org.xutils:xutils:3.5.0'

(如果还是使用Eclipse,需要自行下载jar包导入至项目中即可。本篇文章是以Android Studio开发)

并且我们还需要在AndroidManifest.xml文件中添加网络权限,具体权限如下,

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

二、使用。

创建Application,在它的onCreate()方法中添加初始化代码,具体代码如下,

public class MyApplication extends Application {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        x.Ext.init(this);  
        x.Ext.setDebug(false); // 是否输出debug日志,开启debug会影响性能  
    }  
}

记得要在AndroidManifest.xml文件中添加我们自定义的MyApplication,代码如下,

<application  
           android:name=".MyApplication"  
           android:allowBackup="true"  
           android:icon="@mipmap/ic_launcher"  
           android:label="@string/app_name"  
           android:supportsRtl="true"  
           android:theme="@style/AppTheme">  
       <activity android:name=".MainActivity">  
           <intent-filter>  
               <action android:name="android.intent.action.MAIN"/>  
  
               <category android:name="android.intent.category.LAUNCHER"/>  
           </intent-filter>  
       </activity>  
   </application>

下面分别介绍这四大模块的使用。

三.ViewUtils模块。

(1).android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;  
(2).新的事件绑定方式,使用混淆工具混淆后仍可正常工作;  
(3).目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

使用注解可以简化许多重复的工作。记得要使用注解功能,需要先初始化注解模块!

1.在Activity中使用注解

在Activity的onCreate()中需要初始化注解框架,具体写法如下,

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    x.view().inject(this);//初始化注解模块  
}

加载布局

@ContentView(R.layout.activity_main)

绑定控件

@ViewInject(R.id.tv_msg)  
TextView mTvMsg;  
@ViewInject(R.id.btn_start)  
Button mStartBtn;

事件监听

@Event(value=R.id.btn_start,type = View.OnClickListener.class)  
private void startLoading(View v){  
    Toast.makeText(this, "startLoading", Toast.LENGTH_SHORT).show();  
}

使用@Event事件注解事,需要注意以下几点

* 1. 方法必须私有限定,  
* 2. 方法参数形式必须和type对应的Listener接口一致.  
* 3. 注解参数value支持数组: value={id1, id2, id3}  
* 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.  
* 5. type,可选参数, 默认是View.OnClickListener.class,需要根据实际情况来确定具体的值,例如长按事件,type = View.OnLongClickListener.class.

2.在Fragment中使用注解

在Fragment中初始化注解框架,与Activity稍有不同,

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
    return  x.view().inject(this,inflater,container);  
}

下面给出Activity全部代码,

@ContentView(R.layout.activity_main)  
public class MainActivity extends AppCompatActivity {  
  
    @ViewInject(R.id.tv_msg)  
    TextView mTvMsg;  
    @ViewInject(R.id.btn_start)  
    Button mStartBtn;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        x.view().inject(this);  
    }  
  
  
    @Event(value=R.id.btn_start,type = View.OnLongClickListener.class)  
    private void startLoading(View v){  
        Toast.makeText(this, "startLoading", Toast.LENGTH_SHORT).show();  
    }  
  
}

有关注解使用,就到这儿!如果还想了解更多,可以去xUtils的github上看它们的sample。