ViewUtils for com.lidroid.xutils

来源:互联网 发布:淘宝 日语 编辑:程序博客网 时间:2024/05/17 09:29

 *    目前移动APP的开发用户交互体验放在首位。

    android L  扁平化、动画式、简约而不简单的交互设计觉得体验很好。如今的APP终端 不论CPU、内存、

 * 分辨率等硬件都搭载到不错的配置。所以使用xutils 框架就可以大量简化你在处理数据库数据,网络加载,网络通

   信及布局设计响应方面所用的时间。这就意味着你可以把节省的这大量时间来思考整个APP的交互如果实现到 扁平     化、动画式、简约化的应用交互能力. 


 * com.lidroid.xutils.ViewUtils 

   是这个框架的一部份针对视图所有控件的初始化,及响应方案简洁化的工具类;主要以注解的方式实例化对象;


 * @ContentView(R.layout.single_mission_details)
public class SingleMissionDetailActivity extends Activity {...}
 * 等同于在oncreate中实行  this.setContentView(R.layout.single_mission_details);
 * 类似这些
 * 所有视图注入方式; 
 * @ViewInject(R.id.btn_app_download)
private Button btn_app_download;
@ViewInject(R.id.main_bar_title)
private TextView tvMainBarTitle;
@ViewInject(R.id.iv_app_mesage)
private ImageView iv_app_message;
@ViewInject(R.id.about_version_code)
private LinearLayout linearLayout;     
 * 等同于在oncreate中实行 iv_app_mesage = (ImageView) findViewById(R.id.iv_app_img);
 * 注入完界面中所胡视图后,一定在oncreate 加上一句;
 * ViewUtils.inject(this); ------inject (注入) 也就相当于初始化;
 * 对象定义结束后,还有另外一大块就是所有视图控件带有的方法;
 * 
 *          btn_shared.setOnClickListener(new  OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "do something.", Toast.LENGTH_SHORT).show();
}
});
 * 
 * 转换为: 
 * 
 * @onclick(value={R.id.btn_shared,R.id.btn_cance,R.id.btn_submit})
 * public void onClick(View v) {
// TODO Auto-generated method stub
     switch(v.getId())
     {
     case R.id.btn_shared:
     break;
     case R.id.btn_cance:
     break;
     case R.id.btn_submit:
     break;
     
     }
}
});
 * 
 * 类似的可以写出其它控件的监听方法;
 * @OnLongClick、@OnTouch、@OnScroll
 * 需要注意的是所有方法是通过反射机制先定义好的,所以不是在随便的一个方法内加上注解就可以实现监听方法,写出的方法一定要和视图控件原生方法相同;
 * 另外在動態中加載顯示的控件的定義方式有所不同;如自定義顯示的對話框;
 * 
 * 


final AlertDialog dlg = new AlertDialog.Builder(this)
.create();
dlg.setCanceledOnTouchOutside(true);
dlg.show();


LayoutInflater mInflater = dlg.getLayoutInflater(); (layoutInflate (佈局填充類))
ImageItemHolder holder = null; (這里的imageItemHolder 爲爲所用到控件視圖實例化的內部類)
View view = mInflater.inflate(R.layout.headimg_dialog_mini,
null);
holder = new ImageItemHolder();
ViewUtils.inject(holder, view);
view.setTag(holder);


android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);(params 參數)
dlg.addContentView(view, params);
holder.tvDialogBody.setText("");


holder.btn_attestating
.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
...


}
});
holder.btn_cance.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
...
}
});

 * 
 * private class ImageItemHolder {
@ViewInject((R.id.btn_attestating))
private Button btn_attestating;
@ViewInject((R.id.tv_dialog_body))
private TextView tvDialogBody;
@ViewInject(R.id.btn_cance)
private Button btn_cance;


}
 * -------------------------------------------
 * 使用xUtils快速开发框架需要有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
混淆时注意事项:
添加Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt
不要混淆xUtils中的注解类型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation { *; }
对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");
 * 
 * xUtils架包和sample下载:https://github.com/wyouflf/xUtils
0 0
原创粉丝点击