• Stars
    star
    939
  • Rank 48,667 (Top 1.0 %)
  • Language
    Java
  • Created over 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A plugin for Intellj IDEA & Android Studio which can help you generate interfaces and classes of MVP. 一款Intellj IDEA 和Android Studio 自动生成MVP模式所需接口以及实现类的插件。

MvpHelper English Document

一款适用于 Intellij IDEAAndroid Studio 的插件, 可用于为MVP架构生成接口以及实现类, 解放双手.

欢迎 Issue Report, 欢迎 Feature Request, 欢迎 Pull Request

感谢XieEDeHeiShou 提供重构后的代码以及特性跟进。

预览

Contract 模式:

mode_contract

Presenter 模式(已设置后缀Impl):

mode_presenter

后缀支持:

suffix_support

日志输出(气球偶尔会闪现一下,可以在Event Log里关闭):

log

错误提示:

error_package

error_class_name

注意

对于MVP模式,定义一个 Contract 类来放置 Model , View , Presenter 的接口,将大大减少类文件。 将普通的接口替代如下:

public interface GoodsInfoContract {

    interface View {

    }
    interface Presenter {

    }
    interface Model {

    }

}

如何安装

在插件仓库搜索MvpHelper

image

或者

第一步

下载MvpHelper_v2_3_release.jar 或者前往 releases

第二步

安装插件

image

如何使用

Contract 类或者 Presenter 类内部,点击 Generate 菜单或使用快捷键 Alt + Insert, 选择 Mvp Helper 即可生成对应文件.

已知特性

  • 移除快捷键 Meta + 1
  • 在非Java源文件中使用快捷键 Alt + Insert 时, MvpHelper菜单将不再出现
  • 不再限制根目录包名
  • 不再将 contract 包限制在根目录下, 并且支持sub-package 例如:

    com.example.project.package1.contract.package2.AContract 将会生成 com.example.project.package1.model.package2.AModel 以及 com.example.project.package1.presenter.package2.APresenter

  • AContract 位于 presenter 包下时将会出现错误提示而非继续生成错误的类
  • 支持File Header Template
  • 已实现 Contract 模式
    • Contract 所处的位置中必须有至少一个包以 contract 结尾
    • 强制 Contractinterface
    • Contract 中的三个接口不包含多余的修饰符
    • 重复生成将删除旧文件并重新生成
  • 已实现 Presenter 模式
    • Presenter 所处的位置中必须有至少一个包以 presenter 结尾
    • Presenter 中启动插件将复刻 Contract 模式下的实现方式
    • Presenter 模式在自定义后缀的情况下不会删除原有 Presenter, 因此我们建议使用Contract 模式

TODO

  • 实现 Activity 模式
  • 实现 Fragment 模式
  • 将生成的文件自动添加到Git (考虑到要进一步学习Git的命令行语法等相关内容, 可能会鸽)

参考资源

更新日志

v2.x版 -基于Intellij Open Api 实现 by XieEDeHeiShou

  • 2017-07-19
    • 修复潜在的NPE异常(#20)
    • MvpHelper_v2_3_release.jar
  • 2017-04-27
    • 修复实现类修饰符异常 package-private -> public
    • 新增日志类EventLogger
    • MvpHelper_v2_2_release.jar
  • 2017-04-25
    • 实现配置信息的存取
    • 实现运行时加载配置信息
    • MvpHelper_v2_0_release.jar
    • 追加 用户指导.gif
    • 原仓库请求合并
    • 在Android Studio 环境下测试Java项目与Android项目
    • 修复Merge后造成的 Contract 修饰符异常,强制生成后的 Contractpublic interface PrefixContract
    • 修复配置面板在销毁时触发的 AbstractMethodException
    • MvpHelper_v2_1_release.jar
  • 2017-04-24
    • 实现配置面板布局
    • 实现 Presenter 模式下的包生成类 PresenterModeDirGenerator
    • 抽取各功能实现类接口,重新分包
    • 基于Intellij Open Api 更新 Contract 而非以替换文本的方式更新
      • 强制 Contractinterface
      • 移除 Contract 中接口的多余修饰符 public
  • 2017-04-23
    • 实现在指定包下生成类文件, 并注入包信息
    • 实现让生成类实现特定接口
    • 更新README.CN.MD
  • 2017-04-15 更新对当前环境的判定规则
  • 2017-04-12 实现Action的可见性判定, 当用户尝试通过 Alt + Insert 启动插件时, 将判断当前环境是否为Java源文件环境, 当条件不成立时将不再显示插件动作
  • 2017-04-11 实现 DirGeneratorFileGenerator 用于分别生成 packageclass
  • 2017-04-10 实现 EnvironmentChecker 用于检查当前环境是否满足生成条件:
    • Java源文件的文件名是否以 Contract 结尾, 并处于 contract 包下
    • Java源文件的文件名是否以 Presenter 结尾, 并处于 presenter 包下

v1.x版 -基于Java IO Api 实现 by githubwing

  • 2017-04-10 将源文件分包并尝试重构
  • 2017-04-09 移除源文件中的 C 语言异味
  • 2017-04-06 分支自原仓库, 并向源文件中追加注释, 以便阅读

Eclipse

GO HOME

License

Copyright 2016 androidwing1992

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

ZoomHeader

A demo of animation show how turn viewpager into detail.神交互。模仿饿了么详情页可以跟随手指移动 viewpager变详情页
Java
2,468
star
2

DragPhotoView

A photoView to scale image and finish activity,高仿微信可拖拽返回PhotoView
Java
1,614
star
3

GankClient-Kotlin

gank.io kotlin实现的干货集中营Android客户端 Kotlin Dagger Databinding Rxjava Retrofit Okhttp3
Kotlin
1,527
star
4

ByeBurger

An Android behavior library let your titlebar or bottom navigation hiding on scroll ,极其简便的快速实现滑动隐藏标题栏和导航栏
Java
1,214
star
5

WingUE

A series of nice UE,一些较好用户体验实现集合
Java
933
star
6

DroidSword

[xposed module]Android apk逆向快速定位,灰色按钮克星。Android reverse tool
Kotlin
502
star
7

ThreeDLayout

A 3D Layout for Android,When you use it warp other view,it can became a 3D view,一秒让你的view拥有3D效果!
Java
500
star
8

ExpandableViewpager

A Cool Viewpager ~ 可以展开缩放的Viewpager
Java
267
star
9

HotXposed

xposed hotfix/dynamic load/no reboot library
Java
231
star
10

CustomBehavior

自定义Behavior的例子
Java
142
star
11

WaveLoadingView

一款水波纹 百分比 loadingview
Java
129
star
12

PanelView

android PanelView DashBoard 仪表盘 汽车仪表盘 气压仪表盘
Java
126
star
13

compassView

an 3D Android CompassView 一款3D 的安卓自定义view 指南针
Java
107
star
14

RichTextView

一款富文本textview,可以点击图片交互。
Java
81
star
15

cardiograph

cardiograph android 心电图
Java
76
star
16

LoadingView

这里是 loadingView的集合,会不定期增加一些效果。
Java
72
star
17

SimpleLineChart

simple lineChart Android
Java
60
star
18

CirclePercentView

An Android CirclePercentView 圆形进度条 百分比 饼状图
Java
52
star
19

TheLetter

DAPP for Nebulas
HTML
22
star
20

QQHongBao

安卓模仿qq下拉抢红包~
Java
21
star
21

RxRetrofitMVPDagger2DatabindingSample

Java
18
star
22

WaveView

an Android WaveView 波浪view 三角 圆形
Java
17
star
23

WeChatEye

模仿微信下拉眼睛view
Java
16
star
24

SortTabView

Android 下带有排序功能的Tab标签
Java
16
star
25

AopDemo

Android AOP Demo
Java
15
star
26

KotlinDemo

Kotlin入门demo+教程
Kotlin
12
star
27

QQMessage

仿qq消息去除效果
Java
9
star
28

My360Clean

模仿360安全卫士清理内存动画
Java
9
star
29

Ice

Freeze the Android World
Kotlin
6
star
30

xxxxx

xxxxxxx
Java
1
star