android SDK开发 -- TitleBar封装(一)
假设app的title 统一的都是这种左中右结构的 代码如下
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 style="@style/app_title_style" 3 android:baselineAligned="false" 4 android:gravity="center_vertical" 5 android:orientation="horizontal"> 6 <ViewSwitcher 7 android:id="@+id/app_title_left_switcher" 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"> 10 <TextView 11 android:id="@+id/app_title_left_text" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:text="返回"/> 15 <ImageView 16 android:id="@+id/app_title_left_image" 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content"/> 19 </ViewSwitcher> 20 <ViewSwitcher 21 android:id="@+id/app_title_middle_switcher" 22 android:layout_width="0dip" 23 android:layout_height="wrap_content" 24 android:layout_marginLeft="16dip" 25 android:layout_weight="1"> 26 <TextView 27 android:id="@+id/app_title_middle_text" 28 android:layout_width="wrap_content" 29 android:layout_height="wrap_content" 30 android:layout_gravity="center" 31 android:text="title"/> 32 <ImageView 33 android:id="@+id/app_title_middle_image" 34 android:layout_width="wrap_content" 35 android:layout_height="wrap_content" 36 android:layout_gravity="center"/> 37 </ViewSwitcher> 38 <ViewSwitcher 39 android:id="@+id/app_title_right_switcher" 40 android:layout_width="wrap_content" 41 android:layout_height="wrap_content"> 42 <TextView 43 android:id="@+id/app_title_right_text" 44 android:layout_width="wrap_content" 45 android:layout_height="wrap_content" 46 android:text="下一步"/> 47 <ImageView 48 android:id="@+id/app_title_right_image" 49 android:layout_width="wrap_content" 50 android:layout_height="wrap_content"/> 51 </ViewSwitcher> 52 </LinearLayout>
先来继续完善一下BaseActivity
1 protected void onCreate(BundlesavedInstanceState){ 2 super.onCreate(savedInstanceState); 3 ActivityMgr.push(this); 4 5 findViewById(); 6 } 7 8 // 初始化app中通用的控件 9 protected void findViewById(){ 10 11 } 12 // 设置标题栏 13 protected void setTitle(){ 14 15 }
然后看一下BaseActivity的具体实现类TitleDemoActivity
1 public class TitleDemoActivity extendsBaseActivity{ 2 3 protectedvoid onCreate(Bundle savedInstanceState){ 4 super.onCreate(savedInstanceState); 5 } 6 7 protectedvoid findViewById(){ 8 setContentView(R.layout.title_demo); 9 super.findViewById(); 10 super.setTitle();// 设置标题栏 11 } 12 }
TitleBar封装
BaseActivity的设计初衷是所有的Activity的都继承该类。
首先定义一些通用的属性、以及方法
子类调用
1 public class TitleDemoActivity extends BaseActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 7 } 8 9 @Override 10 protected void findViewById() { 11 setContentView(R.layout.title_demo); 12 super.findViewById(); 13 14 setTitle("返回主页", "这是一个Title", "下一个界面"); 15 } 16 17 }