編輯:關於Android編程
最近仿照官方MVP模式開發,如下:
每個模塊都需要寫Activity,Contract,Fragment,Presenter。覺得好麻煩,就想能不能一次創建這幾個類
寫到在android studio的D:\android-studio\plugins\android\lib\templates\activities 這個目錄下存在著androidstudio新建項目的模板,拷過來改改就可以了<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxjZW50ZXI+DQoJPGltZyBhbHQ9"這裡寫圖片描述" height="598" src="/uploadfile/Collfiles/20160804/20160804092807600.png" width="718" />
復制一個Activity的文件夾重命名為我的MVPActivity,內部有如下幾個文件
root文件夾下是模板代碼
globals.xml.ftl
recipe.xml.ftl
template.xml
最後一個圖片是新建項目時的展示圖
首先我把我的activity,fragment,contract,persenter幾個類拷貝到root\src\app_package\下邊,並重命名為xxx.java.ftl文件
然後再globals中修改成
<#assign Collection=extractLetters(objectKind)>//從輸入的title中獲取輸入字符 <#assign collection_name=Collection?lower_case>//獲取到的字符轉成小寫 <#include "../common/common_globals.xml.ftl" /> //作為activity的layout的命名 //作為activity的layout的命名 //作為activity類名 //作為fragment類名 //作為presenter類名 //作為contract類名
然後在幾個.java.ftl類中做配置,用globals中的配置名代替
MainActivity.java.ftl
package ${packageName}; import android.os.Bundle; import ${applicationPackage}.R; import ${applicationPackage}.base.BaseActivity; import ${applicationPackage}.util.ActivityUtils; public class ${ActivityName} extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_${activity_layout}); ${FragmentName} ${fragment_layout}Fragment = (${FragmentName}) getSupportFragmentManager().findFragmentById(R.id.id_fragment_container); if (${fragment_layout}Fragment == null) { ${fragment_layout}Fragment = ${FragmentName}.newInstance(); ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), ${fragment_layout}Fragment, R.id.id_fragment_container); } new ${PresenterName}(${fragment_layout}Fragment); } }
MainContract.java.ftl
package ${packageName}; import ${applicationPackage}.BasePresenter; import ${applicationPackage}.BaseView; public interface ${ContractName} { interface View extends BaseView{ } interface Presenter extends BasePresenter { } }
MainFragment.java.ftl
package ${packageName}; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import ${applicationPackage}.R; import ${applicationPackage}.base.BaseFragment; import static com.google.common.base.Preconditions.checkNotNull; /** * View */ public class ${FragmentName} extends BaseFragment implements ${ContractName}.View { private ${ContractName}.Presenter mPresenter; public static ${FragmentName} newInstance() { return new ${FragmentName}(); } @Override public void onResume() { super.onResume(); mPresenter.subscribe(); } @Override public void onPause() { super.onPause(); mPresenter.unsubscribe(); } @Override public void setPresenter(${ContractName}.Presenter presenter) { mPresenter = checkNotNull(presenter); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_${fragment_layout}, container, false); return root; } }
MainPresenter.java.ftl
package ${packageName}; import android.support.annotation.NonNull; import rx.subscriptions.CompositeSubscription; import static com.google.common.base.Preconditions.checkNotNull; /** * Presenter */ public class ${PresenterName} implements ${ContractName}.Presenter { private ${ContractName}.View mLoginView; private CompositeSubscription mSubscription; public ${PresenterName}(@NonNull ${ContractName}.View ${activity_layout}View) { mLoginView = checkNotNull(${activity_layout}View); mSubscription = new CompositeSubscription(); mLoginView.setPresenter(this); } @Override public void subscribe() { } @Override public void unsubscribe() { mSubscription.clear(); } }
還需要在recipe.xml.ftl中做如下配置。就是新建activity的時候需要創建哪些到哪裡。
template.xml復制過來沒做什麼修改
裡面的name是創建時顯示的名字,改成自己的MVPActivity
template_blank_activity.png
到這裡好像就配置完了,可以試一下了,先重啟下android studio。
下邊圖示創建步驟吧,懶得寫字
Item是template中default的默認值,自己可以改,如Task,然後finish就o了。
打開來看看模板代碼是否正確
應該沒啥問題了。
Android6.0 SystemUI啟動簡析及圖標顯示刷新。Android系統的SystemUI包含狀態欄、導航欄、快捷設置、通知欄及鎖屏界面等等;主要流程是從Syst
寫在前面的廢話 下載文件,幾乎是所有APP都會用到的功能!算了,還是不廢話了,直接開寫吧。。。 簡單使用 完成一個下載任務只需要4行代碼,什
Android Studio系列-HelloWorld前言Hello 各位,小巫這裡要記錄一些關於如何使用Android Studio開發Android app,這一篇是
qq群簽到有什麼用?手機qq群怎麼簽到?下面就讓小編來教教你吧!qq群簽到應用介紹:連續15天簽到,可以獲得群空間橙名的特權;連續30天簽到,可以獲得會員試