Android 模板编写

AndroidStudio自带模板位置

  1. Mac下: Applications/Android Studio.app/Contents/plugins/android/lib/templates
  2. Windows下:/plugins/android/lib/templates/

以创建MVPFragment为例创建自己的模板

创建MVP需要创建MVPContract和MVPPresenter的默认实现,所以需要额外创建两个源代码文件。MVPContract.java 和MVPPresenter.java,同时需要绑定Contract和Presenter的名称和Fragment一致。

  1. 找到AndroidStudio自带模板中的BlankFragment模板拷贝一份命名为MVPFragment。模板地址:
    Applications/Android Studio.app/Contents/plugins/android/lib/templates/other/BlankFragment
  1. 添加参数
    • 找到MVPFragment文件夹下的文件 template.xml
      • 修改模板名称
        找到 <template标签下的name修改为你想要的名称 例如:Fragment(MVP)
      • 添加对Contract和Presenter文件的描述参数
     <parameter
        id="contractName"
        name="contract Name"
        type="string"
        constraints="class|nonempty|unique"
        default="${underscoreToCamelCase(classToResource(className))}Contract"
        help="The name of the Contract class to create" />

    <parameter
        id="presenterName"
        name="presenter Name"
        type="string"
        constraints="class|nonempty|unique"
        default="${underscoreToCamelCase(classToResource(className))}Presenter"
        help="The name of the Presenter class to create" />

id: 是唯一的变量,后面代码中可以通过$contractName}来获取他的值
default:是默认Contract的名称,可以通过${underscoreToCamelCase(classToResource(className))}Contract 来进行修改

  1. 创建代码模板
    打开MVPFragment文件夹下面的 /root/src/app_package 创建模板文件:
    MVPContract.java.ftl
package ${packageName};

public interface ${contractName}  {
 interface Presenter {
        void subscribe();

        void unsubscribe();
    }

    interface View {
        void setPresenter(Presenter presenter);

        void showLoading();

        void hideLoading();

        void updateView();
    }
}

MVPPresenter.java.ftl

package ${packageName};
import io.reactivex.disposables.CompositeDisposable;

public class ${presenterName} implements ${contractName}.Presenter {
    private ${contractName}.View mView;
    private CompositeDisposable mDisposable;

    public ${presenterName}(${contractName}.View view) {
        mView = view;
        mView.setPresenter(this);
        mDisposable=new CompositeDisposable();
    }

    @Override
    public void subscribe() {

    }

    @Override
    public void unsubscribe() {
        mDisposable.clear();
    }
}
  1. 关联模板文件
    打开MVPFragment 文件夹下的recipe.xml文件
    照着Fragment.java 的创建方法创建Contract和Presenter
    代码如下:
    <open file="${escapeXmlAttribute(srcOut)}/${contractName}.java" />

    <instantiate from="root/src/app_package/MVPContract.java.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${contractName}.java" />

    <open file="${escapeXmlAttribute(srcOut)}/${presenterName}.java" />

    <instantiate from="root/src/app_package/MVPPresenter.java.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${presenterName}.java" />

到此MVPFragment模板创建完成。重启AndroidStudio创建Fragment你就会看到MVPFragment。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,295评论 25 709
  • 由于项目用上了 mvp 架构,基本上一个页面就至少需要新创建6个类,分别是 model view presente...
    大空ts翼阅读 6,210评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,288评论 19 139
  • 回到上海,随即进入战备的紧张状态,我奉命开着那艘原本用来迎战日本人的英国鱼雷艇,忙着对付长江北岸看不见的敌人。 看...
    上海过客阅读 1,558评论 0 1
  • 说句实在话,真的挺伤心的...感觉我们两个都太独立了,我真的好累,我想要的关心,一点点的安全感你都给不了我,即使几...
    叶公子哥哥阅读 1,342评论 0 0

友情链接更多精彩内容