Xutils3.0框架的初始体验二

来源:互联网 发布:单片机液晶数字钟论文 编辑:程序博客网 时间:2024/05/30 23:15

一、注解模块

Activity的注解 
1.在Application的oncreate方法中加入下面代码: 
x.Ext.init(this); 
2.在Activity的oncreate方法中加入下面代码: 
x.view().inject(this); 
3.加载当前的Activity布局需要如下注解: 
@ContentView加入到Activity的上方 
4.给View进行初始化需要如下注解: 
@ViewInject
5.处理控件的各种响应事件需要如下注解: 
@Envent 

例子如下:

 @ContentView(R.layout.activity_main)public class MainActivity extends ActionBarActivity {    @ViewInject(R.id.btn_get)    Button btn_get;    @ViewInject(R.id.btn_post)    Button btn_post;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        x.view().inject(this);        btn_get.setText("发送get请求");        btn_post.setText("发送post请求");    }    //等同于@Event(value={R.id.btn_get,R.id.btn_post},type=View.OnClickListener.class)    @Event(value={R.id.btn_get,R.id.btn_post})    private void getEvent(View view){        switch(view.getId()){        case R.id.btn_get:            Toast.makeText(MainActivity.this, btn_get.getText().toString().trim(), 0).show();            break;        case R.id.btn_post:            Toast.makeText(MainActivity.this, btn_post.getText().toString().trim(), 0).show();            break;        }    }

@Event这个注解默认情况下type属性为View.OnClickListener.class.如果你想实现其余点击事件效果,只需要把type值进行修改即可。 
另外需要注意的一点是按钮的点击事件必须用private进行修饰


Fragment的注解:

@ContentView(R.layout.fragment_first)  public class FirstFragment extends Fragment{      private MyAdapter adapter;    private List<Person> list=new ArrayList<>();      private List<String> listUrl=new ArrayList<>();      private List<String> listName=new ArrayList<>();        @ViewInject(R.id.btn_test)    Button btn_test;    @ViewInject(R.id.listView)    ListView listView;    @Override    public View onCreateView(LayoutInflater inflater,            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return  x.view().inject(this, inflater, container);    } 

ViewHolder的注解

 public class MyAdapter extends  BaseAdapter{    private Context context;    private List<Person> list;    private LayoutInflater mInflater;    private ImageOptions options;    public ViewHolder holder;    public MyAdapter(Context context, List<Person> list) {        this.context = context;        this.list = list;        this.mInflater=LayoutInflater.from(context);        options=new ImageOptions.Builder().setLoadingDrawableId(R.drawable.ic_launcher)                .setLoadingDrawableId(R.drawable.ic_launcher).setUseMemCache(true).setCircular(true).build();    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        holder=null;        if(convertView==null){            convertView=mInflater.inflate(R.layout.itemone, null);            holder=new ViewHolder();            x.view().inject(holder,convertView);            convertView.setTag(holder);        }        else{            holder=(ViewHolder) convertView.getTag();        }        Person bean=list.get(position);        holder.tv_name.setText(bean.getName());        x.image().bind(holder.iv_image, bean.getImgUrl(), options);        return convertView;    }    class ViewHolder{        @ViewInject(R.id.tv_name)        private TextView tv_name;        @ViewInject(R.id.iv_image)        private ImageView iv_image;    }

二、图片加载模块

用法:

x.image().bind(imageView, url, imageOptions);x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);x.image().bind(imageView, "assets://test.gif", imageOptions);x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {...});x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...});
第一个参数传入一个View,第二个参数传入一个图片的网络地址,第三个参数一般是加载图片的配置。 

现在看一下ImageOptions这个类

ImageOptions options=new ImageOptions.Builder()//设置加载过程中的图片.setLoadingDrawableId(R.drawable.ic_launcher)//设置加载失败后的图片.setFailureDrawableId(R.drawable.ic_launcher)//设置使用缓存.setUseMemCache(true)//设置显示圆形图片.setCircular(true)//设置支持gif.setIgnoreGif(false).build();

如果需要对加载的图片进行操作的话,可以使用:

x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});

通过返回的Drawable对象进行图片的处理,满足项目的个性化的要求.

0 0