第一步:
新建timeview class,extends linearlayout:
public class TimeView extends LinearLayout { private TextView textView; public TimeView(Context context, AttributeSet attrs) { super(context, attrs); } public TimeView(Context context) { super(context); } public TimeView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { super.onFinishInflate(); textView=(TextView)findViewById(R.id.time); handler.sendEmptyMessage(0); } @Override protected void onVisibilityChanged(View changedView, int visibility) { super.onVisibilityChanged(changedView, visibility); if (visibility==changedView.VISIBLE){ handler.sendEmptyMessage(0); }else { handler.removeMessages(0); } } private void refreshtime(){ java.util.Calendar c= java.util.Calendar.getInstance(); textView.setText(String.format("%d:%d:%d",c.get(java.util.Calendar.HOUR_OF_DAY),c.get(java.util.Calendar.MINUTE),c.get(java.util.Calendar.SECOND))); } private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); refreshtime(); if (getVisibility()== View.VISIBLE){ sendEmptyMessageDelayed(0,1000); } } }; }替换layout中的第一个tabhost,此时layout代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.jowang.clock.MainActivity"> <TabHost android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tabHost" android:layout_gravity="center_horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content"></TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.jowang.clock.TimeView android:id="@+id/tabTime" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/time" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center" /> </com.example.jowang.clock.TimeView> <LinearLayout android:id="@+id/tabAlarm" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"></LinearLayout> <LinearLayout android:id="@+id/tabTimer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"></LinearLayout> <LinearLayout android:id="@+id/tabStopwatch" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"></LinearLayout> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout>