一、封装activity
public abstract class Activity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initWindows(); if (initargs(getIntent().getExtras())) { // 得到界面Id并设置到Activity界面中 int layoutId = getContentLayoutId(); setContentView(layoutId); initWidget(); initData(); } else { finish(); } } /** * 初始化窗口 */ protected void initWindows() { } /** * 初始化相关参数 * * @param bundle 参数Bundle * @return 如果参数正确返回True,错误返回False */ protected boolean initargs(Bundle bundle) { return true; } /** * 得到当前界面的资源文件Id * * @return 资源文件Id */ protected abstract int getContentLayoutId(); /** * 初始化控件 */ protected void initWidget() { ButterKnife.bind(this); } /** * 初始化数据 */ protected void initData() { } // 当点击界面导航返回时,Finish当前界面 @Override public boolean onSupportNavigateUp() { finish(); return super.onSupportNavigateUp(); } @Override public void onBackPressed() { // 得到当前Activity下的所有Fragment List<android.support.v4.app.Fragment> fragments = getSupportFragmentManager().getFragments(); // 判断是否为空 if (fragments != null && fragments.size() > 0) { for (Fragment fragment : fragments) { // 判断是否为我们能够处理的Fragment类型 if (fragment instanceof italker.yijia.net.common.app.Fragment) { // 判断是否拦截了返回按钮 if (((italker.yijia.net.common.app.Fragment) fragment).onBackPressed()) { // 如果有直接Return return; } } } } super.onBackPressed(); finish(); } }二、封装fragment
public abstract class Fragment extends android.support.v4.app.Fragment { private View mRoot; private Unbinder mRootUnBinder ; @Override public void onAttach(Context context) { super.onAttach(context); // 初始化参数 initargs(getArguments()); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (mRoot == null) { int layId = getContentLayoutId(); // 初始化当前的跟布局,但是不在创建时就添加到container里边 View root = inflater.inflate(layId, container, false); initWidget(root); mRoot = root; } else { if (mRoot.getParent() != null) { // 把当前Root从其父控件中移除 ((ViewGroup) mRoot.getParent()).removeView(mRoot); } } return mRoot; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initData(); } /** * 初始化数据 */ protected void initData() { } /** * 初始化相关参数 */ protected void initargs(Bundle bundle){ } /** * 得到当前界面的资源文件Id * * @return 资源文件Id */ protected abstract int getContentLayoutId(); /** * 初始化控件 */ protected void initWidget(View view){ mRootUnBinder = ButterKnife.bind(this, view); } /** * 返回按键触发时调用 * * @return 返回True代表我已处理返回逻辑,Activity不用自己finish。 * 返回False代表我没有处理逻辑,Activity自己走自己的逻辑 */ public boolean onBackPressed(){ return false; } }
三、封装相关依赖版本,首先选择项目Porject:ITakler的build.gradle![]()
ext{ //版本号相关 versionCode=1; versionName='1.0.0' //相关依赖版本 supportVersion='24.2.1' butterknifeVersion='8.5.1' }四、选择整个项目的Module:app的build.gradle
compile "com.android.support:appcompat-v7:$rootProject.ext.supportVersion" compile "com.jakewharton:butterknife:$rootProject.ext.butterknifeVersion" annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.ext.butterknifeVersion"五、选择Module:common的build.gradle
compile "com.jakewharton:butterknife:$rootProject.ext.butterknifeVersion" annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.ext.butterknifeVersion" compile "com.android.support:appcompat-v7:$rootProject.ext.supportVersion"