Android Afinal框架学习(二) FinalActivity 一个IOC框架
2023-09-14 09:08:15 时间
框架地址:https://github.com/yangfuhai/afinal
相应的源代码:
net.tsz.afinal.annotation.view.*
FinalActivity
FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,经常使用的监听器), 利用set方式注入
全然注解方式就能够进行UI绑定和事件绑定,无需findViewById和set event Listener
这个过程:initInjectedView>findViewById、setListener(activity, activity.field, eventLocalMethod, eventType)>
1.依据id得到view对象,设置到activity相应的field中
2. switch(eventType) {
case event:
view.set event listener(new EventListener(activity, eventLocalMethod));
EventListener implements many event listener>
在相应的event的重写方法中,反射调用eventLocalMethod
这些eventLocalMethod 的參数须要与 相应的系统 event method 的參数一致
...
}
注解有哪些类型:
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ViewInject { public int id(); public String click() default ""; public String longClick() default ""; public String itemClick() default ""; public String itemLongClick() default ""; public Select select() default @Select(selected="") ; }
调用注解:
package com.stone.afinal; import net.tsz.afinal.FinalActivity; import net.tsz.afinal.annotation.view.Select; import net.tsz.afinal.annotation.view.ViewInject; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; public class MainActivity extends FinalActivity { @ViewInject( id = R.id.imageview, click = "myClick", longClick = "myLongClick") ImageView imageview; @ViewInject( id = R.id.listview, click = "myClick", itemLongClick = "myItemLongClick", itemClick = "myItemClick", longClick = "myLongClick", select = @Select(selected="myItemSelected", noSelected="myNoSelected")) ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//继承FinalActivity,setContentView中初始化了 } public void myClick(View v) { System.out.println("--myClick--"); } public void myLongClick(View v) { System.out.println("--myLongClick--"); } public void myItemLongClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { System.out.println("--myItemLongClick--"); } public void myItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { System.out.println("--myItemClick--"); } public void myItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) { System.out.println("--myItemSelected--"); } public void myNoSelected(AdapterView<?> arg0) { System.out.println("--myNoSelected--"); } }
在其它侵入式框架下使用(如ActionBarShelock)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);
FinalActivity.initInjectedView(this);
}
在Fragment中使用
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
FinalActivity.initInjectedView(this,viewRoot);
}
相关文章
- android图片资源加密,Android平台图像文件加密
- android okio使用方法,Android 开源框架 Okio 原理剖析「建议收藏」
- android退出app代码,Android应用退出代码各种方式
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android sdk根目录,Android SDK位置
- android sdk manager安装,Android SDK Manager安装过程
- android定时器取消,Android定时器崩溃取消
- Android 性能采集之Fps,Memory,Cpu | 性能监控系列
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- android系统中toast是什么_Android个人资料简单布局
- Android angle_android 界面悬停
- Android保存图片到相册(适配android 10以下及以上)
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- Android开发学习笔记之 获得Android 可使用内存
- Android 自定义打包apk文件名
- React Native学习笔记(一)—— Win11安卓子系统的安装与使用 - Windows Subsystem for Android - WSA
- 【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )
- 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- Android P可以正式支持通话录音详解手机开发
- [android] 看博客学习Android常见的几种RuntimeException详解手机开发
- [android] 利用广播实现ip拨号详解手机开发
- [android] activity的生命周期详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- 施密特称Android比iPhone更安全 遭听众嘲笑
- Android实现PHP连接MySQL进行数据交互(android通过php连接mysql)
- Android中库项目的使用方法图文介绍
- Android源码学习之观察者模式应用及优点介绍
- Android中的Button自定义点击效果实例代码
- Android中Root权限获取的简单代码
- Android学习笔记之SharedPreference
- Android开发学习笔记Gallery和GridView浅析
- Android中自定义WindowTitle样式实例