xUtils 包含了很多实用的android工具,本篇博客将介绍一下xUtils的注解模块。
- xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
- xUitls 最低兼容android 2.2 (api level 8)
- xUtils总共包括四大模块分别是:注解模块、网络模块、图片模块、数据库模块。
build.gradle
中依赖xUtilscompile 'org.xutils:xutils:3.3.26'
2.对框架进行初始化,创建一个类 extends Application、在Manifest文件中注册zsyApp
public class zsyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//框架初始化
x.Ext.init(this);
}
}
3.使用注解的方式加载布局,绑定控件
@ContentView(R.layout.activity_main)//Activity注解
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.viewpager)//布局控件注解
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//只需这一行代码,就将布局和控件加载了。省去了重复的findViewById();
x.view().inject(this);
//加载布局,控件
}
}
4.使用@Event为按钮绑定监听事件
//通常我们会使用匿名内部类为按钮绑定监听事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {}
});
/**
* button的点击事件
* 访问修饰符必须是private,方法名可以任意。参数和返回值必须跟上面写的onClick方法一致
* type 默认值是View.OnClickListener.class,如果是这个可以不写。也就是事件类型
* value对应的就是控件id,所以我们可以不用findViewById绑定控件
* @param view
*/
@Event(type = View.OnClickListener.class, value = https://www.it610.com/article/R.id.btn)
private void click(View view) {
Snackbar.make(view,"点击事件", Snackbar.LENGTH_SHORT).show();
}/**
* button的长按事件
* @param view
*/
@Event(type = View.OnLongClickListener.class, value = https://www.it610.com/article/R.id.btn)
private boolean Longclick(View view) {
Snackbar.make(view,"长按事件", Snackbar.LENGTH_SHORT).show();
return true;
}
5.Fragment注解
@ContentView(R.layout.inject_view)//加载布局
public class InjectFragment extends Fragment {@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return x.view().inject(this, inflater, container);
//fragment注解
}
}
6.对ListView中ViewHolder进行注解绑定和Item的点击/长按事件
//ListView代码省略,请自行脑补....
public class ListViewAdapter extends BaseAdapter {
private List listItems;
private LayoutInflater inflater;
public ListViewAdapter(Context context, List listItems) {
this.listItems = listItems;
inflater = LayoutInflater.from(context);
}@Override
public int getCount() {
return listItems.size();
}@Override
public Object getItem(int position) {
return listItems.get(position);
}@Override
public long getItemId(int position) {
return position;
}@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = inflater.inflate(android.R.layout.simple_list_item_1, null);
viewHolder = new ViewHolder();
//ViewHolder注解
x.view().inject(viewHolder, convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.childName.setText(listItems.get(position));
return convertView;
}private class ViewHolder {
@ViewInject(android.R.id.text1)//加载item的控件
TextView childName;
}
}/**
* ListViewItem的点击事件
*/
@Event(type = AdapterView.OnItemClickListener.class, value = https://www.it610.com/article/R.id.list_item)
private void onItemClick(AdapterView> parent, View view, int position, long id) {
Snackbar.make(view, list.get(position) + "点击事件", Snackbar.LENGTH_SHORT).show();
}/**
* ListViewItem的长按事件
*/
@Event(type = AdapterView.OnItemLongClickListener.class, value = https://www.it610.com/article/R.id.list_item)
private boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
Snackbar.make(view, list.get(position) + "长按事件", Snackbar.LENGTH_SHORT).show();
return true;
}
【Android快速开发框架之xUtils---注解模块】
文章图片
到这里就注解模块就说完了,接下来我们在说一说网络模块。 项目地址:https://github.com/azhong1011/xUtils