亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android多功能時鐘開發(fā)案例(基礎篇)

 更新時間:2022年01月12日 07:59:46   投稿:lijiao  
這篇文章主要為大家詳細介紹了Android多功能時鐘開發(fā)案例的基礎知識,為開發(fā)Android時鐘打下基礎,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文我們進入Android多功能時鐘開發(fā)實戰(zhàn)學習,具體的效果可以參考手機上的時鐘,內(nèi)容如下

首先我們來看一看布局文件layout_main.xml

整個布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/container" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" > 
 
 <TabHost 
 android:id="@android:id/tabhost" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" > 
 
 <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.clock.TimeView 
   android:id="@+id/tabTime" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
  </com.example.clock.TimeView> 
 
  <com.example.clock.AlarmView 
   android:id="@+id/tabAlarm" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
<span style="white-space:pre"> </span>…… 
  </com.example.clock.AlarmView> 
 
  <com.example.clock.TimerView 
   android:id="@+id/tabTimer" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
<span style="white-space:pre"> </span>…… 
  </com.example.clock.TimerView> 
 
  <com.example.clock.StopWatchView 
   android:id="@+id/tabStopWatch" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
<span style="white-space:pre"> </span>…… 
  </com.example.clock.StopWatchView> 
  </FrameLayout> 
 </LinearLayout> 
 </TabHost> 
 
</FrameLayout> 

 整個布局整的是一個FrameLayout,我們在里面放了一個TabHost,接下來我們就可以在里面直接添加自己想要的布局了,可能初學者初一看會有那么一個疑問,就是<com.example.clock.……></com.example.clock.……>這個是什么東西??這是一個自定義的控件,我們創(chuàng)建的一個繼承了LinearLayout的一個類(講解可以參考這里//chabaoo.cn/article/85515.htm),上面我們看到了四個這樣的標簽,表示我們有四個這樣的Tab頁面。關于布局的東西這里就不多講了,之后會把我自己在學習過程中的一些不懂,以及相關的知識點上傳到資源中,大家可以下載來看看。

完整的布局文件代碼:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/container" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" > 
 
 <TabHost 
 android:id="@android:id/tabhost" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" > 
 
 <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.clock.TimeView 
   android:id="@+id/tabTime" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
 
   <TextView 
   android:id="@+id/tvTime" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:gravity="center" 
   android:textAppearance="?android:attr/textAppearanceLarge" /> 
  </com.example.clock.TimeView> 
 
  <com.example.clock.AlarmView 
   android:id="@+id/tabAlarm" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
 
   <ListView 
   android:id="@+id/lvListAlarm" 
   android:layout_width="fill_parent" 
   android:layout_height="0dp" 
   android:layout_weight="1" > 
   </ListView> 
 
   <Button 
   android:id="@+id/btnAddAlarm" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:text="@string/add_alarm" > 
   </Button> 
  </com.example.clock.AlarmView> 
 
  <com.example.clock.TimerView 
   android:id="@+id/tabTimer" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
 
   <LinearLayout 
   android:layout_width="fill_parent" 
   android:layout_height="0dp" 
   android:layout_weight="1" 
   android:orientation="horizontal" > 
 
   <EditText 
    android:id="@+id/etHour" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:inputType="number" 
    android:singleLine="true" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=":" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <EditText 
    android:id="@+id/etMin" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:inputType="number" 
    android:singleLine="true" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=":" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <EditText 
    android:id="@+id/etSec" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:inputType="number" 
    android:singleLine="true" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
   </LinearLayout> 
 
   <LinearLayout 
   android:id="@+id/btnGroup" 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:orientation="horizontal" > 
 
   <Button 
    android:id="@+id/btnStart" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/start" /> 
 
   <Button 
    android:id="@+id/btnPause" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/pause" /> 
 
   <Button 
    android:id="@+id/btnResume" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/resume" /> 
 
   <Button 
    android:id="@+id/btnReset" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/reset" /> 
   </LinearLayout> 
  </com.example.clock.TimerView> 
 
  <com.example.clock.StopWatchView 
   android:id="@+id/tabStopWatch" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:orientation="vertical" > 
 
   <LinearLayout 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:orientation="horizontal" > 
 
   <TextView 
    android:id="@+id/timeHour" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=":" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:id="@+id/timeMin" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=":" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:id="@+id/timeSec" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="." 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
 
   <TextView 
    android:id="@+id/timeMsec" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
   </LinearLayout> 
 
   <ListView 
   android:id="@+id/lvWatchTime" 
   android:layout_width="fill_parent" 
   android:layout_height="0dp" 
   android:layout_weight="1" > 
   </ListView> 
 
   <LinearLayout 
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:orientation="horizontal" > 
 
   <Button 
    android:id="@+id/btnSWStart" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/start" /> 
 
   <Button 
    android:id="@+id/btnSWPause" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/pause" /> 
 
   <Button 
    android:id="@+id/btnSWResume" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/resume" /> 
 
   <Button 
    android:id="@+id/btnSWLap" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/lap" /> 
 
   <Button 
    android:id="@+id/btnSWReset" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/reset" /> 
   </LinearLayout> 
  </com.example.clock.StopWatchView> 
  </FrameLayout> 
 </LinearLayout> 
 </TabHost> 
 
</FrameLayout> 

講完了布局,我們來講講MainActivity

private TabHost tabHost; 
 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 
 tabHost = (TabHost) findViewById(android.R.id.tabhost); 
 tabHost.setup(); 
 
 // 為TabHost添加標簽 
 // 新建一個newTabSpec(newTabSpec)用來指定該標簽的id(就是用來區(qū)分標簽)的 
 // 設置其標簽和圖表(setIndicator) 
 // 設置內(nèi)容(setContent) 
 /* 
 * 設置選項卡 : -- 設置按鈕名稱 : setIndicator(時鐘); -- 設置選項卡內(nèi)容 : setContent(), 
 * 可以設置視圖組件, 可以設置Activity, 也可以設置Fragement; 
 */ 
 tabHost.addTab(tabHost.newTabSpec("tabTime").setIndicator("時鐘") 
  .setContent(R.id.tabTime)); 
 tabHost.addTab(tabHost.newTabSpec("tabAlarm").setIndicator("鬧鐘") 
  .setContent(R.id.tabAlarm)); 
 tabHost.addTab(tabHost.newTabSpec("tabTimer").setIndicator("計時器") 
  .setContent(R.id.tabTimer)); 
 tabHost.addTab(tabHost.newTabSpec("tabStopWatch").setIndicator("秒表") 
  .setContent(R.id.tabStopWatch)); 
} 

在MainActivity中主要的操作就是設置TabHost,上面的代碼中已經(jīng)貼上了解釋,這里就不講了,接下來一篇我們就重點來講講時鐘、鬧鐘、計時器和秒表這四部分,希望大家繼續(xù)學習。

以上就是本文的全部內(nèi)容,希望對大家學習Android軟件編程有所幫助。

相關文章

最新評論