Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alittlegreens/ioc_simple
自定义注解,实现IOC注入框架,替代无聊的findViewById()
https://github.com/alittlegreens/ioc_simple
ioc
Last synced: about 19 hours ago
JSON representation
自定义注解,实现IOC注入框架,替代无聊的findViewById()
- Host: GitHub
- URL: https://github.com/alittlegreens/ioc_simple
- Owner: aLittleGreens
- Created: 2019-03-19T02:31:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-03-19T02:53:59.000Z (over 5 years ago)
- Last Synced: 2024-06-05T14:02:55.134Z (5 months ago)
- Topics: ioc
- Language: Java
- Homepage:
- Size: 129 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# IOC_Simple
自定义注解,IOC注入框架#原理分析
## 1、布局注入原理
```java
@ContentView(R.layout.activity_main)
public class MainActivity extends BaseActivity {
...
}
```
获得类(如 activity)->布局注解->注解的值->获取指定的方法(如 contentView())-> 执行方法## 2、控件注入原理
```java
@InjectView(R.id.btn)
private Button btn;
```
获得类 -> 获得所有属性->遍历属性->获取每个属性的注解->获取注解的值->获取指定方法(findViewById()) ->执行方法->设置赋值访问私有->为控件赋值## 3、事件注入
```java
@OnClick({R.id.btn,R.id.btn2}) //给 button 设置一个点击事件
public void myClick(View view) {switch (view.getId()){
case R.id.btn:
Toast.makeText(MainActivity.this,"onClick1",Toast.LENGTH_LONG).show();
break;case R.id.btn2:
Toast.makeText(MainActivity.this,"onClick2",Toast.LENGTH_LONG).show();
break;
}}
```事件3大成员
1、监听的方法名,setOnClickListener()
2、监听的对象,View.OnClickListener()
3、回调方法,onClick(View view)
对于使用者,只需要关注回调方法即可
基于动态代理方式,拦截onClick方法,执行我们自定义的方法。
获取类->获得所有方法->遍历方法 ->每个方法的注解-> 遍历所有注解-> 获取指定的注解(类型,判空)->获取注解3大成员->获取注解值-> 遍历注解值
->赋值控件(findViewById)->获取指定方法(setOnClickListener)->执行方法