当前位置:   article > 正文

Android快速开发框架之Afinal设计思路分析(一)_afinal getdeclaredmethod

afinal getdeclaredmethod

Afinal框架内置了四大模块功能:

1.  FinalActivity:可通过注解技术为Activity的 View成员变量绑定一个指定id的View,同时也可以为这个View成员注册事件监听器。省去了我们之前使用findViewById()绑定View以及使用setOnXXX()为View注册监听器。尤其是当Activity的View成员比较多的时候,可以为我们省去很多findViewById(),setOnXXX()这样重复的语句,从而减少代码的冗余。

2.  FinalDb:通过orm(对象关系映射 Object Relational Mapping)技术,使我们可以一行代码实现对Sqlite数据库的增删改查。且支持一对多,多对一等查询。

3.  FinalBitmap:通过使用lru算法管理内存,多线程加载Bitmap,支持缓存并可配置线程数量、缓存大小,缓存路径,无需考虑oom和图片错位现象,可自定义加载动画。

4.  FinalHttp:通过HttpClient对http请求进行封装,支持ajax方式加载。

注意事项:使用Afinal快速开发框架需要如下两个权限。

(1)访问网络权限(http请求网络时用)

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

(2)访问sdcard权限(图片缓存时用)

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



一、FinalActivity模块设计思路:

       FinalActivity模块的作用就是通过注解为Activity的View类型的成员属性绑定一个View,如果这个View需要某事件监听器则同时为其注册事件监听器。所以设计此模块的思路自然是如何设计注解,并且如何实现View的绑定和事件监听器的注册。

第一步:在项目源代码的根目录下定义FinalActivity类,并且设计成抽象类。

设计成抽象类的目的是为了让继承它的Activity类可以使用FinalActivity模块的功能

  1. public abstract class FinalActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. }


第二步:在项目源代码的annotation/view包下新建注解,注解中要包含View的id和支持的事件处理方法名。

ViewInject注解:

  1. @Target(ElementType.FIELD)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. /**
  4. * 这是一个注解 ,只能标记在属性字段上,且保留到运行时,说明可以通过反射获取注解的属性值
  5. */
  6. public @interface ViewInject {
  7. public int id(); //View的id
  8. public String click() default "";//点击事件处理方法名,默认为空串
  9. public String longClick() default "";//长按事件处理方法名,默认为空串
  10. public String itemClick() default "";//条目点击事件处理方法名,默认为空串
  11. public String itemLongClick() default "";//条目长近事件处理方法名,默认为空串
  12. public Select select() default @Select(selected="") ;//这里又设计了一个注解,代表条目选中和取消选中方法名,默认选中方法名为空串
  13. }

Select注解:

  1. @Target(ElementType.FIELD)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. /**
  4. * 是否被选中的注解
  5. */
  6. public @interface Select {
  7. public String selected(); //条目选中事件方法名
  8. public String noSelected() default "";//条目取消选中事件方法名,默认为空串
  9. }

第三步:在项目源代码的annotation/view包下设计事件监听总控制类,对外统一使用这个总控制类为View注册事件监听器。(目前Afinal框架只支持点击事件,长按事件,条目点击事件,条目长按事件,条目选中事件,条目取消选中事件)

    1、创建EventListener类,实现Afinal支持的几个事件监听器接口,实现各自的抽象方法。

  1. public class EventListener implements View.OnClickListener ,View.OnLongClickListener,AdapterView.OnItemClickListener,AdapterView.OnItemLongClickListener,AdapterView.OnItemSelectedListener{
  2. @Override
  3. public void onClick(View v) {
  4. }
  5. @Override
  6. public boolean onLongClick(View v) {
  7. return false;
  8. }
  9. @Override
  10. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  11. }
  12. @Override
  13. public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  14. return false;
  15. }
  16. @Override
  17. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  18. }
  19. @Override
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/586870
推荐阅读
相关标签
  

闽ICP备14008679号