用Android Studio编写简易闹钟(一)

一、闹钟功能的介绍以及界面的展示

         该闹钟是根据我们手机闹钟设计的一个简单的闹钟APP,其中包含时钟、闹钟、秒表和计时器功能。用户可以对闹钟添加和删除,可以对秒表计时、暂停和重置,对计时器可以暂停、计时、继续和重置等功能。

                                                                    下图为闹钟的时钟功能界面和闹钟功能界面

   

                                                                   下图为闹钟的计时功能和秒表功能

基本的界面就是这样了,接下来我们就开始详细的介绍闹钟的设计过程。


二、介绍系统的设计界面           

         闹钟的布局文件代码如下

          由于该闹钟系统包含时钟、闹钟、计时器、秒表四个功能,所以只要插入TabHost控件就能实现在手机上更加简洁地展示四个功能。后面只需要在TabHost中插入四个Tab用来切换展示的界面,具体的代码实现如下:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tabHost = (TabHost)findViewById(android.R.id.tabhost);
        tabHost.setup();
        TabWidget tabWidget = tabHost.getTabWidget();
        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));

        for (int i =0; i < tabWidget.getChildCount(); i++) {
            //修改Tabhost高度和宽度
            tabWidget.getChildAt(i).getLayoutParams().height = 90;
            tabWidget.getChildAt(i).getLayoutParams().width = 65;
            //修改显示字体大小
            TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
            tv.setTextSize(25);
            tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));
        }
        stopWatchView = (StopWatchView)findViewById(R.id.tabStopWatch);
    }

 

        1、 因为时钟功能中,只要显示当前的日期和时钟就可以了,所以只需要插入一个TextView用来显示日期时间就可以了。           

<com.example.administrator.alarm5.TimeView
          android:id="@+id/tabTime"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:textAlignment="center"
          >

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:id="@+id/tvTime"
          android:gravity="center"
          android:textAppearance="?android:attr/textAppearanceLarge"
          android:textSize="36sp"
          android:textAlignment="center"
          android:textStyle="normal|bold" />
</com.example.administrator.alarm5.TimeView>

              2.1、闹钟功能就相对时钟功能就复杂很多了,因为这里需要对闹钟进行增加,删除等操作,而且可能需要展示多个闹钟的时间。所以这里需要用到有一个Button控件用来增加闹钟和一个ListView控件用来展示闹钟的时间。

<com.example.administrator.alarm5.AlarmView
                    android:id="@+id/tabAlarm"
                    android:layout_width="match_parent"
                    android:orientation="vertical"
                    android:layout_height="match_parent">
                    <ListView
                        android:id="@+id/lvAlarmList"
                        android:layout_width="fill_parent"
                        android:layout_weight="1"
                        android:layout_height="0dp"
                        android:headerDividersEnabled="true"
                        android:footerDividersEnabled="true">

                    </ListView>
                    <Button
                        android:id="@+id/btnAddAlarm"
                        android:text="添加闹钟"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:textAlignment="center"
                        android:textSize="18sp" />
                </com.example.administrator.alarm5.AlarmView>

             2.2、当闹钟想起来的时候,也需要展现一个界面提醒用户,所以我们还需要设计另外一个.xml布局文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <TextView
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/font_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="闹铃响起来了!" />
    <Button
        android:id="@+id/close_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="关闭闹钟"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="100dp"
        />

</RelativeLayout>

效果图如下

       

  3、秒表功能包含四个功能键,分别为开始,暂停、继续和重置。所以需要四个Button,然后需要三个EditText分别用来给用户输入时分秒。具体的代码如下:

 <com.example.administrator.alarm5.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:textAppearance="?android:attr/textAppearanceLarge"
                            android:id="@+id/etHour"
                            android:inputType="number"
                            android:singleLine="true"
                            android:layout_width="0dp"
                            android:layout_weight="1"
                            android:layout_height="wrap_content"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text=":"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />

                        <EditText
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:id="@+id/etMin"
                            android:inputType="number"
                            android:singleLine="true"
                            android:layout_width="0dp"
                            android:layout_weight="1"
                            android:layout_height="wrap_content"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text=":"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />

                        <EditText
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:id="@+id/etSec"
                            android:inputType="number"
                            android:singleLine="true"
                            android:layout_width="0dp"
                            android:layout_weight="1"
                            android:layout_height="wrap_content"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/btnGroup"
                        android:orientation="horizontal">

                        <Button
                            android:id="@+id/btnStart"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="开始"
                            android:textAlignment="center"
                            android:textSize="18sp" />
                        <Button
                            android:id="@+id/btnPause"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="暂停"
                            android:textSize="18sp"
                            android:textAlignment="center" />
                        <Button
                            android:id="@+id/btnResume"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="继续"
                            android:textSize="18sp"
                            android:textAlignment="center" />
                        <Button
                            android:id="@+id/btnReset"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="重置"
                            android:textSize="18sp"
                            android:textAlignment="center" />
                    </LinearLayout>
                </com.example.administrator.alarm5.TimerView>

4、剩下最后一个功能项就是计时器了,这个和上面讲了秒表比较类似,不同的是多一个Button按钮用来计时,另外还需要一个ListView用来显示计时的时间,详细的代码如下:

<com.example.administrator.alarm5.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"
                            android:textAlignment="center"
                            android:fontFamily="sans-serif"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:text=":"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:id="@+id/timeMin"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:text=":"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:id="@+id/timeSec"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:text=":"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textAppearance="?android:attr/textAppearanceLarge"

                            android:textAlignment="center"
                            android:textStyle="normal|bold" />
                        <TextView
                            android:id="@+id/timeMSec"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:textAppearance="?android:attr/textAppearanceLarge"
                            android:textAlignment="center"
                            android:textStyle="normal|bold" />

                    </LinearLayout>
                    <ListView
                        android:layout_width="fill_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:id="@+id/lvWatchTimeList"
                        android:background="@color/common_google_signin_btn_text_dark_default">
                    </ListView>

                    <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">
                        <Button
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="开始"
                            android:id="@+id/btnSWStart"
                            android:textAlignment="center"
                            android:textStyle="normal|bold"
                            android:textSize="18sp" />
                        <Button
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="暂停"
                            android:id="@+id/btnSWPause"
                            android:textAlignment="center"
                            android:textSize="18sp" />
                        <Button
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="继续"
                            android:id="@+id/btnSWResume"
                            android:textAlignment="center"
                            android:textSize="18sp" />
                        <Button
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="重置"
                            android:id="@+id/btnSWReset"
                            android:textSize="18sp"
                            android:textAlignment="center" />
                        <Button
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="计时"
                            android:id="@+id/btnSWLap"
                            android:textSize="18sp"
                            android:textAlignment="center" />
                    </LinearLayout>
                </com.example.administrator.alarm5.StopWatchView>

         上面基本上都介绍完界面布局的代码,这些代码都是activity_mian.xml中的部分代码,这里只是展示了所要说明的部分,下一节将会介绍这个闹钟的后端代码。

  • 30
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值