Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

DevinFu/ViewInjector

Repository files navigation

前言

该项目是从xUtils3中剥离出来的. xUtils3项目中主要有3个部分组成,分别是网络组件,数据库组件和控件注入组件. 但由于网络组件可以由google自家的Volley框架来替代,数据库组件也有很多更好的的解决方案, 如Sugar,LitePal等.因此,本项目将控件注入组件从原项目中剥离出来,形成单独的项目,并上传到jCenter,方便开发者引用.本项目会定期检查xUtils的更新,并将相关更新进行同步.在此,感谢xUtils3的开发人员.本项目所有权利归xUtils开发人员所有.如有冒犯,可联系本人进行删除,谢谢!

ViewInjector简介

ViewInjector是从xUtils3项目中剥离出来的一个进行控件依赖注入的微型框架.使用此项目,可以简化控件的声明,引用及控件事件的回调等操作.

在Android项目中使用ViewInjector

1 导入library

该项目已发布到jcenter上,可直接在gradle工程中进行引用.引用代码如下:

compile 'com.frozy:view-injector:0.5.1'

2 初始化配置

与原项目类似,需要在项目的application中做如下初始化工作.假设项目的Application为BaseApplication.java,则配置如下:

BaseApplication.java

@Override
public void onCreate() {
 super.onCreate();
 ...
 x.Ext.init(this);
 // 是否输出debug日志
 x.Ext.setDebug(BuildConfig.DEBUG);
 ...
}

3 在activity中进行依赖注入

在activity中进行控件的依赖注入,可以设置activity的content view, 声明界面控件,进行控件回调等.

Now, show you the code ~

MainActivity.java

@ContentView(R.layout.activity_main)
public class MainActivity extends Activity {
 
 @ViewInject(R.id.bt_signin) 
 Button mBtSignin;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 x.view().inject(this);
 ...
 }
 @Event(value = R.id.bt_signin, type = View.OnClickListener.class)
 private void onSigninButnClick(View view)
 {
 ...
 }
}

以上代码片段中简要介绍了ViewInjector的一般用法.

  • activity的onCreate函数中将该activity进行注入:x.view().inject(this)
  • @ContentView(R.layout.activity_main)设置该activity的content view.
  • @ViewInject(R.id.bt_signin) Button mBtSignin声明了控件并自动映射view id.
  • @Event(value = R.id.bt_signin, type = View.OnClickListener.class)进行事件分配与回调.
    • value为控件id, type为回调函数类型,默认为控件onClick事件的回调函数.
    • 此处函数声明必须为private, 函数参数形式必须与实际的回调函数的参数形式一致.
    • 方法以Click或Event结尾, 方便配置混淆编译参数.

4 混淆配置

在混淆文件中,加入如下代码:

-keepattributes *Annotation*
-keepclassmembers class * {
 void *(android.view.View);
 *** *Click(...);
 *** *Event(...);
}

About

Injecte views or widgets in Android Application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /