android app 框架之BaseActivity
2016-08-17 18:59
211 查看
为什么要设计BaseActivity?
所有的框架设计,都是为了解决一些问题,提高效率。
设计BaseActivity的目的如下
1 是减少重复的工作。如每个Activity都要弹出Toast,弹出Dialog;可以每次都写一次,有人说,我直接copy就完了,有什么难的。但是,如果有十个界面都调用了loading的dialog,coding的时候不知不觉。但是,在修改的时候呢,即使修改一个很小的东西,那也得改十次。天生软件员,就是为了拯救这类麻烦。
2 统一的编码风格。所谓的维护软件完整性,一个app最好是有一个统一的风格,字符大小,字体,背景颜色等保持相对统一。
现在就说这两个原因吧。
下面以共有的Toolbar为例。几乎所有的Activity都需要显示返回键和title。
那么如何通过设计BaseActivity轻松搞定。
代码:
BaseActivity.java
MainActivity.java
activity_main.xml
frg_base.xml:
AndroidManifest.xml
后面还有一些公共的属性,和方法,可以自己慢慢完善。
所有的框架设计,都是为了解决一些问题,提高效率。
设计BaseActivity的目的如下
1 是减少重复的工作。如每个Activity都要弹出Toast,弹出Dialog;可以每次都写一次,有人说,我直接copy就完了,有什么难的。但是,如果有十个界面都调用了loading的dialog,coding的时候不知不觉。但是,在修改的时候呢,即使修改一个很小的东西,那也得改十次。天生软件员,就是为了拯救这类麻烦。
2 统一的编码风格。所谓的维护软件完整性,一个app最好是有一个统一的风格,字符大小,字体,背景颜色等保持相对统一。
现在就说这两个原因吧。
下面以共有的Toolbar为例。几乎所有的Activity都需要显示返回键和title。
那么如何通过设计BaseActivity轻松搞定。
代码:
BaseActivity.java
MainActivity.java
activity_main.xml
frg_base.xml:
AndroidManifest.xml
frg_base.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/root_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="@dimen/toolbar_height" android:background="?attr/colorPrimary" android:minHeight="0dp" android:paddingEnd="9dp" app:navigationIcon="@mipmap/actionbar_back"> </android.support.v7.widget.Toolbar> <FrameLayout android:id="@+id/layout_container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout>
BaseActivity.java
public class BaseActivity extends AppCompatActivity { private LinearLayout rootlayout; private FrameLayout frameLayout; protected Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void setContentView(@LayoutRes int layoutResID) { rootlayout = (LinearLayout) getLayoutInflater().inflate(R.layout.activity_base,null); mToolbar = (Toolbar) rootlayout.findViewById(R.id.my_toolbar); frameLayout = (FrameLayout) rootlayout.findViewById(R.id.layout_container); // 将传入的layout加载到activity_base的content_frame里面 getLayoutInflater().inflate(layoutResID, frameLayout, true); super.setContentView(rootlayout); setUpActionBar(); } /** * toolbar的设置 */ public void setUpActionBar() { setSupportActionBar(mToolbar); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } }
引用BaseActivity
MainActivity.javapublic class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); initValues(); }
后面还有一些公共的属性,和方法,可以自己慢慢完善。
相关文章推荐
- Android App框架设计之编写基类BaseActivity
- Android App框架设计之编写基类BaseActivity
- Android App框架设计 基类BaseActivity
- Android BaseActivity App框架设计BaseActivity封装
- android应用框架搭建------BaseActivity
- android应用框架搭建之BaseActivity
- 使用DataBinding框架遇到的错误——找不到符号类 BR 程序包 com.android.databinding.library.baseAdapters app:compileDebugJav
- Android ApiDemos详解之App_Activity_IntentActivityFlags(7)
- Android FrameWork——ActivityManager框架
- android.app.Activity
- Android ApiDemos详解之App_Activity_Hello World(6)
- boolean android.app.Activity.isFinishing()函数使用
- android.app.ContextImpl.startActivity(ContextImpl.java:617)
- Android核心分析(22)-----Android应用框架之Activity
- Android ApiDemos详解之App/Activity/Custom Title(1)
- Android ApiDemos详解之App/Activity/Dialog(4)
- android.app.Activity
- Android 调用另一个应用(app)中的Activity
- android.app.Activity
- Android核心分析(22)-----Android应用框架之Activity