如何成为T型人才,垂直在一个行业中,必须要有一整套知识体系,在这里,就一个字坚持~
前言
EasyAnnotation框架使用编译时注解,解决项目重复功能代码编码,通过注APT技术生成样板代码,在通过注解进行注入,提高开发效率。该框架主要功能模块:1、对象工厂模式实例化。2、界面跳转。3、控件绑定、事件绑定功能。
Contents
一、功能介绍
注解 | 描述 |
---|---|
@BindView | 指定控件绑定 |
@OnClick | 指定事件绑定 |
@IntentField | 指定Activity跳转时,Binder数据传输参数(范围:成员变量) |
@IntentParameter | 指定Activity跳转时,Binder数据传输参数(范围:方法形参) |
@IntentMethod | 指定Activity跳转目标类名 |
@ObjectFactory | 指定生成对象工厂类 |
1.1、使用数据绑定功能
-
初始化注解,需要在Activity初始化方法onCreate,调用AnnotationUtils.bind(this)进行注入。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_three); AnnotationUtils.bind(this); }
-
View控件绑定使用@BindView(id)注入。
@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(); } }
1.2、使用Activity之间跳转功能
1.2.1、使用成员变量设置Activity中binder参数,@IntentField(目标Activity类名)、@IntentMethod(目标Activity类名)
-
Activity传递数据,并进行跳转。
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接收数据。
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(); } }
1.2.2、使用方法形参设置Activity中binder参数,@IntentParameter(目标Activity类名)、@IntentMethod(目标Activity类名)
-
Activity传递数据,并进行跳转。
@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(); }
1.3、使用生成对象工厂类
-
@ObjectFactory(type=工厂类,key="类标识"),生成实例化对象。
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; } }
-
通过标识获取实例化对象。
private void initView() { HomeFragment main = (HomeFragment) new BaseFragment$Factory().objectFactory("Home"); }
About me
-
Email:linwei9605@gmail.com
-
Blog: offer.github.io/
-
Github: github.com/WeiShuaiDev