EasyAnnotation框架使用编译时注解,解决项目重复功能代码编码,经过注APT技术生成样板代码,在经过注解进行注入,提升开发效率。该框架主要功能模块:一、对象工厂模式实例化。二、界面跳转。三、控件绑定、事件绑定功能。git
注解 | 描述 |
---|---|
@BindView | 指定控件绑定 |
@OnClick | 指定事件绑定 |
@IntentField | 指定Activity跳转时,Binder数据传输参数(范围:成员变量) |
@IntentParameter | 指定Activity跳转时,Binder数据传输参数(范围:方法形参) |
@IntentMethod | 指定Activity跳转目标类名 |
@ObjectFactory | 指定生成对象工厂类 |
初始化注解,须要在Activity初始化方法onCreate,调用AnnotationUtils.bind(this)进行注入。github
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
AnnotationUtils.bind(this);
}
复制代码
View控件绑定使用@BindView(id)注入。markdown
@BindView(R.id.mTvTitle)
public TextView mTvTitle;
复制代码
View控件事件绑定使用@OnClick([id])注入。框架
@OnClick({R.id.mBtSubmit})
public void onClick(View view){
if(view.getId()==R.id.mBtSubmit){
Toast.makeText(this,"点击了",Toast.LENGTH_SHORT).show();
}
}
复制代码
Activity传递数据,并进行跳转。ide
public class OneActivity extends AppCompatActivity {
@IntentField("TwoActivity")
String title = "OneActivity";
@IntentField("TwoActivity")
UserInfo userInfo;
@IntentMethod("TwoActivity")
public void jumpOneToTwoActivity() {
userInfo = new UserInfo("username", "password");
new TwoActivity$Jump().jumpActivity(OneActivity.this, title, userInfo);
}
}
复制代码
Activity接收数据。oop
public class TwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
initData();
initView();
}
/**
* 获取数据
*/
private void initData() {
TwoActivity$Init activity = (TwoActivity$Init)
new TwoActivity$Init().initActivity(this);
String title = activity.title;
UserInfo userInfo = activity.userInfo;
Toast.makeText(this, "title=" + title + ";username=" +
userInfo.username + ";password" + userInfo.password,
Toast.LENGTH_LONG).show();
}
}
复制代码
Activity传递数据,并进行跳转。this
@IntentMethod("MainActivity")
public void jumpOneToMainActivity(
@IntentParameter("MainActivity") String name,
@IntentParameter("MainActivity") int count,
String title) {
new MainActivity$Jump().jumpActivity(OneActivity.this, name, count);
}
复制代码
Activity接收数据。编码
private void initData() {
MainActivity$Init activity = (MainActivity$Init)
new MainActivity$Init().initActivity(this, 0);
int count = activity.count;
String name = activity.name;
Toast.makeText(this,
"count=" + count + ";name=" + name, Toast.LENGTH_SHORT).show();
}
复制代码
@ObjectFactory(type=工厂类,key="类标识"),生成实例化对象。spa
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(getLayoutId(), null);
return rootView;
}
public abstract int getLayoutId();
}
复制代码
@ObjectFactory(type = BaseFragment.class, key = "Home")
public class HomeFragment extends BaseFragment {
@Override
public int getLayoutId() {
return R.layout.fragment_home;
}
}
复制代码
经过标识获取实例化对象。code
private void initView() {
HomeFragment main = (HomeFragment)
new BaseFragment$Factory().objectFactory("Home");
}
复制代码