目前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文件中添加网络权限,具体权限如下,
二、使用。
创建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,代码如下,
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
下面分别介绍这四大模块的使用。
三.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。