最近在github上看到一个很好Android端IOC框架,觉得十分小巧方便,用起来的非常简单,因此推荐给大家,主人十分勤奋,一有时间就更新框架,励志让安卓开发以后变得超级简单,用代码改变世界。希望大家能支持,多多给星

github传送门:https://github.com/JackWHLiu/jackknife

一、关于如何配置环境

如果要依赖jackknife的库,需要对号入座的加上以下两个配置。

//指定仓库的地址,在project的build.gradle加入加粗的代码。

allprojects {  repositories {    jcenter()    maven { url "https://jitpack.io" }  } }

//依赖本库,在app模块的build.gradle加入加粗的代码。

dependencies {  compile 'com.github.JackWHLiu:jackknife:1.0.0' }

二、关于如何使用(参考官网http://www.jackwhliu.cn/jackknife/)

(一)基于IOC的自动注入视图、绑定控件和注册事件(jackknife-ioc)

1、自动注入视图

(1)Activity继承com.lwh.jackknife.app.Activity,Fragment继承com.lwh.jackknife.app.Fragment
(2)保证布局的xml文件和Activity和Fragment的Java类的命名遵循一定的对应关系(Java类名必须以Activity或Fragment结尾)。

具体关系如下:     前缀+名字    例如:MainActivity.java映射的xml文件名就为activity_main.xml,TTSFragment.java映射的xml文件名就为fragment_t_t_s.xml。    Java文件以大写字母分隔单词,xml以下划线分隔单词。

2、自动绑定控件

(1)不加注解

直接在Activity或Fragment声明控件(View及其子类)为成员变量,不加任何注解。它会以这个View的名字来绑定该控件在xml中的id的value,即@+id/后指定的内容。

(2)加@ViewId

优先级比不加注解高,简单的说,加上这个注解就不会使用默认的使用成员属性名来对应xml的控件id的方式,而是使用该注解指定的id与xml的控件id绑定。

例如:

@ViewId(R.id.alertDialog_et)
EditText alertDialog_et;
(3)加@ViewIgnore

优先级最高,加上该注解,jackknife会直接跳过该控件的自动注入。一般使用在使用Java代码new出来的控件提取到全局的情况。

@ViewIgnore//此注解用在使用代码new出来的View
TextView mTipsTextView;

(4)加onClick点击事件

@OnClick(R.id.button_ioc_plus)
public void plus(View view) {mCountTextView.setText(++mCurrent+"");
    mTipsTextView = new TextView(this);
    mTipsTextView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    mTipsTextView.setText("继续点击,直到点不到我为止");
    linearlayout_ioc_root.addView(mTipsTextView, 1);
}

多个onClick点击事件,只需分号隔开就好

@OnClick({R.id.relativelayout_logger,
        R.id.relativelayout_toastutils,
        R.id.relativelayout_basemodel,
        R.id.relativelayout_ioc,
        R.id.relativelayout_commonadapter,
        R.id.relativelayout_mvp,
        R.id.relativelayout_orm,
        R.id.relativelayout_shadeview,
        R.id.relativelayout_horizontaltabbar,
        R.id.relativelayout_multiradiogroup,
        R.id.relativelayout_letterview
})
public void onMenuItemClick(View view) {Intent intent = new Intent();
    switch (view.getId()) {case R.id.relativelayout_logger:intent.setClass(this, LoggerActivity.class);
            break;
        case R.id.relativelayout_toastutils:intent.setClass(this, ToastActivity.class);
            break;
        case R.id.relativelayout_basemodel:intent.setClass(this, BaseModelActivity.class);
            break;
        case R.id.relativelayout_ioc:intent.setClass(this, IocActivity.class);
            break;
        case R.id.relativelayout_commonadapter:intent.setClass(this, CommonAdapterActivity.class);
            break;
        case R.id.relativelayout_mvp:intent.setClass(this, ArticleActivity.class);
            break;
        case R.id.relativelayout_orm:intent.setClass(this, OrmActivity.class);
            break;
        case R.id.relativelayout_shadeview:intent.setClass(this, ShadeViewActivity.class);
            break;
        case R.id.relativelayout_horizontaltabbar:intent.setClass(this, HorizontalTabBarActivity.class);
            break;
        case R.id.relativelayout_multiradiogroup:intent.setClass(this, MultiRadioGroupActivity.class);
            break;
        case R.id.relativelayout_letterview:intent.setClass(this, LetterViewActivity.class);
            break;
    }startActivity(intent);}
5.基于Java动态代理的ioc事件自动注册,自动调用listenerSetter指定的方法
/**
 * 基于Java动态代理的ioc事件自动注册,自动调用listenerSetter指定的方法,传入的回调方法是listenerType指定的类
 * 型的callbackMethod指定的方法,真正回调的是使用了本注解的方法。需要注意的是,代理方法与被代理方法的参数列表必
 * 须保持一致。
 *
 * @auther lwh
 * @see TitleBar#setOnRightClickListener(TitleBar.OnRightClickListener)
 * @see TitleBar.OnRightClickListener#onClick(View)
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@EventBase(listenerSetter = "setOnRightClickListener",
        listenerType = TitleBar.OnRightClickListener.class,
    callbackMethod = "onClick")
public @interface OnRight {
    int[] value();

是不是很方便简洁,这样会使你的代码逼格提高很多,到这里介绍的差不多了,大家还是自己去下载体验吧,希望大家多关注,多给星,谢谢啦

JackKnife开发专题-方便快捷的IOC框架相关推荐

  1. JackKnife开发专题-性能强大的ORM框架- JackKnife-ORM

    开发 JackKnife框架已经好几个月了,一直在忙项目的事,空余时间才有时间去维护 JackKnife框架,现在jackKnife框架已经慢慢强大了,最近公司做的物联网项目,我也在用自己的JackK ...

  2. 常用Flex IOC框架比较分析【转载】

    IOC(Inversion of Control),也称DI(Dependency Injection),是近年来在软件开发中变得非常流行的一种设计策略.众多的Flex开发者,探索出了诸如Spring ...

  3. 新课程盘古人工智能框架开发专题发布,智华欢迎读者学习!

    新课程盘古人工智能框架开发专题发布,智华欢迎读者学习! 盘古人工智能框架开发专题系列新课程https://edu.csdn.net/course/detail/31166 通过图文并茂.深入浅出的讲解 ...

  4. 打怪上分! 手写Spring ioc 框架,狠狠的“撸撸”Spring 源码

    估计很多朋友使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过. 你是不是有这样的感觉呢? 但是 spring 源码存在一个问题,那就是过于抽象,导致 ...

  5. spring根据名称获取bean_带你从零开始手写 spring ioc 框架,深入学习 spring 源码

    IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...

  6. .NET领域最为流行的IOC框架之一Autofac

    一.前言 Autofac是.NET领域最为流行的IOC框架之一,微软的Orchad开源程序使用的就是Autofac,Nopcommerce开源程序也是用的Autofac. Orchad和Nopcomm ...

  7. java轻量级IOC框架Guice

    Guice是由Google大牛Bob lee开发的一款绝对轻量级的java IoC容器.其优势在于: 速度快,号称比spring快100倍. 无外部配置(如需要使用外部可以可以选用Guice的扩展包) ...

  8. 使用注解打造自己的IOC框架

    一.简述 IoC和AOP可谓是后台开发入门必学的知识(Spring相关),但这两者都仅仅只是概念而已,并非具体技术实现,同样的,Android也可以使用IoC和AOP,之前已经写过如何在Android ...

  9. 教你打造 Android 中的 IOC 框架

    1.概述 首先我们来吹吹牛,什么叫IoC,控制反转(Inversion of Control,英文缩写为IoC),什么意思呢? 就是你一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量, ...

最新文章

  1. 人工智能(Artificial Intelligence)常用算法
  2. AI零基础入门之人工智能开启新时代—下篇
  3. csdn博客如何更改图片大小
  4. php正则表达式如何找到匹配模式中的最后一组
  5. excel 字符串拼接_Excel教程:应收账款自动弹窗提醒
  6. 用calloc()函数分配内存
  7. 【learning】一种奇妙的网络流建模方式
  8. 【四】Jmeter:逻辑控制器
  9. java中得到文件MIME类型的几种方法(转)
  10. 《深度学习》李宏毅 -- task7总结
  11. 数据结构题及c语言版4.31答案,数据结构参考题及答案修正版.doc
  12. java实现添加微信好友_微信api接口,加好友及通过好友请求
  13. Windows程序设计-位图和位块传输
  14. 机器学习课程教学案例—简单手写数字识别系统开发
  15. 数学中 arg min是什么意思
  16. 水浒传 第三十六回 没遮拦追赶及时雨 船火儿夜闹浔阳江
  17. ~scanf的意思、作用
  18. Artemis架构解析
  19. 【git版本控制】| git版本控制操作命令(全)
  20. 计算机一分钟最快打多少字,世界上打字最快的人 马特斯科娃一分钟打多少字...

热门文章

  1. 部署k8s(16):集群调度策略的四种方案
  2. Java操作Redis客户端
  3. Windows驱动_WDDM之二
  4. 每日一练-1-CAD
  5. python print 字体大小_Python print 玩转“点阵字”
  6. 微信小程序中数字取整
  7. iOS开发--开源库
  8. 实现iframe嵌套bilibili视频
  9. 在局域网中搭建自己的网站
  10. android storyboard,iOS中xib与storyboard原理,与Android界面布局的异同