Coder Social home page Coder Social logo

frameworkapt's Introduction

FrameworkAPT

通过注解自动生成代码,目前支持生成MVP,MVVM常用代码的生成

使用说明

1.在项目根目录的build.gradle中添加代码仓库

   maven { url 'https://dl.bintray.com/feijeff0486/JFramework/' }

2.在需要使用到APT机制的module中的build.gradle中添加架包依赖

   implementation 'com.jeff.framework:mvp-core:0.0.1'
   implementation 'com.jeff.framework:framework-annotation:0.0.2'
   annotationProcessor 'com.jeff.framework:framework-annotationprocessor:0.0.2'

3.在代码中使用注解

@PresenterGenerator({MainPresenter.class, BookPresenter.class})
public class MainActivity extends AbstractCompatActivity implements MainView, BookView {
    private static final String TAG = "MainActivity";
    private MainActivityPresenterProvider mainActivityPresenterProvider;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void init(@Nullable Bundle savedInstanceState) {
        super.init(savedInstanceState);
        mainActivityPresenterProvider = MainActivityPresenterProvider.attach(this, savedInstanceState);
        mainActivityPresenterProvider.setLogging(true);
    }

    @Override
    protected void initView() {
        findViewById(R.id.btn_main).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: mainTest");
                mainActivityPresenterProvider.getPresenter(MainPresenter.class).mainTest();
            }
        });
        findViewById(R.id.btn_book).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: bookTest");
                mainActivityPresenterProvider.getBookPresenter().bookTest();
            }
        });
    }

    @Override
    protected void handleExtraParams(int from) {

    }

    @Override
    public void mainTest() {
        Log.d(TAG, "mainTest: ");
    }

    @Override
    public Context getContext() {
        return this;
    }

    @Override
    public void bookTest() {
        Log.d(TAG, "bookTest: ");
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mainActivityPresenterProvider.onSaveInstanceState(outState);
    }

    @Override
    protected void onDestroy() {
        mainActivityPresenterProvider.detach();
        super.onDestroy();
    }
}

build后生成的MainActivityPresenterProvider类

public class MainActivityPresenterProvider extends AbstractPresenterProvider {
  private MainPresenter mMainPresenter;

  private BookPresenter mBookPresenter;

  protected MainActivityPresenterProvider(@NonNull MainActivity target,
      @Nullable Bundle savedInstanceState) {
    super(target, savedInstanceState);
  }

  public MainPresenter getMainPresenter() {
    return mMainPresenter;
  }

  public BookPresenter getBookPresenter() {
    return mBookPresenter;
  }

  @Override
  public void storePresenters() {
    mMainPresenter = new MainPresenter();
    getPresenterStore().put("com.jeff.framework.apt.demo.MainPresenter",mMainPresenter);
    mBookPresenter = new BookPresenter();
    getPresenterStore().put("com.jeff.framework.apt.demo.BookPresenter",mBookPresenter);
  }

  public static MainActivityPresenterProvider attach(@NonNull MainActivity target,
      @Nullable Bundle savedInstanceState) {
    return new MainActivityPresenterProvider(target,savedInstanceState);
  }

  @Override
  public void detach() {
    super.detach();
    mMainPresenter=null;
    mBookPresenter=null;
  }
}

frameworkapt's People

Contributors

feijeff0486 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.