zoukankan      html  css  js  c++  java
  • 安卓定时器

    如图是效果图

    其中2个文本文件是获取当前的系统时间

    其中最关键的是计时器的代码设置

    如下是计时器的代码和布局文件

      1 package org.xml.demo.jishi;
      2 
      3 import java.util.Timer;
      4 import java.util.TimerTask;
      5 
      6 import ogg.huanxin.huadong.R;
      7 import android.content.Context;
      8 import android.os.Handler;
      9 import android.util.AttributeSet;
     10 import android.view.LayoutInflater;
     11 import android.view.View;
     12 import android.widget.LinearLayout;
     13 import android.widget.TextView;
     14 import android.widget.Toast;
     15 
     16 public class TimeView extends LinearLayout {
     17     // 小时的十位数
     18     private TextView tv_hour_decade;
     19     // 小时的个位数
     20     private TextView tv_hour_unit;
     21     // 分钟的十位数
     22     private TextView tv_min_decade;
     23     // 分钟的个位数
     24     private TextView tv_min_unit;
     25     // 秒的十位数
     26     private TextView tv_sec_decade;
     27     // 秒的个位数
     28     private TextView tv_sec_unit;
     29 
     30     private Context context;
     31     private int hour_decade;
     32     private int hour_unit;
     33     private int min_decade;
     34     private int min_unit;
     35     private int sec_decade;
     36     private int sec_unit;
     37 
     38     // 计时器
     39     private Timer timer;
     40     private Handler handler = new Handler() {
     41         public void handleMessage(android.os.Message msg) {
     42             countdown();
     43         }
     44 
     45     };
     46 
     47     public TimeView(Context context, AttributeSet attrs) {
     48         super(context, attrs);
     49         // TODO Auto-generated constructor stub
     50         this.context = context;
     51 
     52         LayoutInflater inflater = (LayoutInflater) context
     53                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     54         View view = inflater.inflate(R.layout.jishidemo, this);
     55         tv_hour_decade = (TextView) view.findViewById(R.id.tv_hour_decade);
     56         tv_hour_unit = (TextView) view.findViewById(R.id.tv_hour_unit);
     57         tv_min_decade = (TextView) view.findViewById(R.id.tv_min_decade);
     58         tv_min_unit = (TextView) view.findViewById(R.id.tv_min_unit);
     59         tv_sec_decade = (TextView) view.findViewById(R.id.tv_sec_decade);
     60         tv_sec_unit = (TextView) view.findViewById(R.id.tv_sec_unit);
     61 
     62     }
     63 
     64     /**
     65      * 开始倒计时
     66      */
     67     public void start() {
     68         if (timer == null) {
     69             timer = new Timer();
     70             timer.schedule(new TimerTask() {
     71 
     72                 @Override
     73                 public void run() {
     74                     // TODO Auto-generated method stub
     75                     handler.sendEmptyMessage(0);
     76                 }
     77             }, 0, 1000);
     78         }
     79     }
     80 
     81     /**
     82      * 结束计时
     83      */
     84     public void stop() {
     85         if (timer != null) {
     86             timer.cancel();
     87             timer = null;
     88         }
     89     }
     90 
     91     /**
     92      * 设置时间的参数
     93      */
     94     public void setTime(int hour, int min, int sec) {
     95         if (hour >= 60 || min >= 60 || sec >= 60 || hour < 0 || min < 0
     96                 || sec < 0) {
     97             throw new RuntimeException("Time format is error");
     98         }
     99 
    100         hour_decade = hour / 10;
    101         hour_unit = hour - hour_decade * 10;
    102 
    103         min_decade = min / 10;
    104         min_unit = min - min_decade * 10;
    105 
    106         sec_decade = sec / 10;
    107         sec_unit = sec - sec_decade * 10;
    108         tv_hour_decade.setText(hour_decade + "");
    109         tv_hour_unit.setText(hour_unit + "");
    110         tv_min_decade.setText(min_decade + "");
    111         tv_min_unit.setText(min_unit + "");
    112         tv_sec_decade.setText(sec_decade + "");
    113         tv_sec_unit.setText(sec_unit + "");
    114 
    115     }
    116 
    117     /**
    118      * 变化时间的十位数
    119      * 
    120      * @param tv
    121      * @return boolean
    122      */
    123     private boolean isCarry4Decade(TextView tv) {
    124         int time1 = Integer.valueOf(tv.getText().toString());
    125         time1 = time1 - 1;
    126         if (time1 < 0) {
    127             time1 = 5;
    128             tv.setText(time1 + "");
    129             return true;
    130         } else {
    131             tv.setText(time1 + "");
    132             return false;
    133         }
    134     }
    135 
    136     private boolean isCarry4Unit(TextView tv) {
    137 
    138         int time = Integer.valueOf(tv.getText().toString());
    139         time = time - 1;
    140         if (time < 0) {
    141             time = 9;
    142             tv.setText(time + "");
    143             return true;
    144         } else {
    145             tv.setText(time + "");
    146             return false;
    147         }
    148     }
    149 
    150     /**
    151      * 倒计时
    152      */
    153     private void countdown() {
    154         if (isCarry4Unit(tv_sec_unit)) {
    155             if (isCarry4Decade(tv_sec_decade)) {
    156 
    157                 if (isCarry4Unit(tv_min_unit)) {
    158                     if (isCarry4Decade(tv_min_decade)) {
    159 
    160                         if (isCarry4Unit(tv_hour_unit)) {
    161                             if (isCarry4Decade(tv_hour_decade)) {
    162                                 Toast.makeText(context, "时间到了",
    163                                         Toast.LENGTH_SHORT).show();
    164                                 stop();
    165                             }
    166                         }
    167                     }
    168                 }
    169             }
    170         }
    171     }
    172 }

    布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:background="#FCC0E9"
        android:orientation="horizontal" >
    
        <TextView
            android:id="@+id/tv_hour_decade"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/tv_hour_unit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|bottom"
            android:text="时"
            android:textColor="#ffffff"
            android:textSize="13sp" />
        <!--  -->
    
        <TextView
            android:id="@+id/tv_min_decade"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/tv_min_unit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|bottom"
            android:text="分"
            android:textColor="#ffffff"
            android:textSize="13sp" />
        <!--  -->
    
        <TextView
            android:id="@+id/tv_sec_decade"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/tv_sec_unit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="0"
            android:textColor="@android:color/white"
            android:textSize="15sp"
            android:textStyle="bold" />
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|bottom"
            android:text="秒"
            android:textColor="#ffffff"
            android:textSize="13sp" />
    
    
    </LinearLayout>
    View Code

    其中主代码文件

     1 package org.xml.demo.jishi;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Calendar;
     5 import java.util.Date;
     6 
     7 import ogg.huanxin.huadong.R;
     8 import android.app.Activity;
     9 import android.os.Bundle;
    10 import android.widget.TextView;
    11 import android.widget.Toast;
    12 
    13 public class JiShi extends Activity {
    14     private TimeView timeView;
    15     private TextView tv_timeTextView;
    16     private TextView tView;
    17 
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         // TODO Auto-generated method stub
    21         super.onCreate(savedInstanceState);
    22         super.setContentView(R.layout.main_jishi);
    23         timeView = (TimeView) super.findViewById(R.id.tv_myjishi);
    24         tv_timeTextView = (TextView) super.findViewById(R.id.tv_shijian);
    25         tView = (TextView) super.findViewById(R.id.tv_dangqianshijian);
    26         // 设置时间
    27         timeView.setTime(10, 0, 0);
    28         // 计时开始
    29         timeView.start();
    30 
    31         // 获取当前系统时间
    32         Calendar calendar = Calendar.getInstance();
    33         int year = calendar.get(Calendar.YEAR);// 获取年份
    34         int month = calendar.get(Calendar.MONTH) + 1;// 获取月份
    35         // int day = calendar.get(Calendar.DAY_OF_MONTH);//当前日期
    36         int day = calendar.get(Calendar.DATE);// 当前日期
    37         int hour = calendar.get(Calendar.HOUR_OF_DAY);// 当期时间
    38         int min = Calendar.getInstance().get(Calendar.MINUTE);// 当前分钟
    39         int sec = calendar.get(Calendar.SECOND);// 当前秒钟
    40 
    41         String s = "当前时间为:" + year + "年" + month + "月" + day + "日" + hour + "时"
    42                 + min + "分" + sec + "秒";
    43 
    44         tv_timeTextView.setText(s);
    45         Toast.makeText(this, s, Toast.LENGTH_LONG).show();
    46 
    47         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    48         String string = df.format(new Date());
    49         tView.setText(string);
    50 
    51     }
    52 }
    View Code
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:background="#eee"
     6     android:orientation="vertical" >
     7 
     8     <TextView
     9         android:layout_width="wrap_content"
    10         android:layout_height="wrap_content"
    11         android:paddingLeft="10dp"
    12         android:text="距商品开枪还有"
    13         android:textColor="#030303"
    14         android:textSize="20sp" />
    15 
    16     <View
    17         android:layout_width="match_parent"
    18         android:layout_height="1dp"
    19         android:background="@android:color/white" />
    20 
    21     <org.xml.demo.jishi.TimeView
    22         android:id="@+id/tv_myjishi"
    23         android:layout_width="wrap_content"
    24         android:layout_height="wrap_content"
    25         android:paddingLeft="10dp" >
    26     </org.xml.demo.jishi.TimeView>
    27 
    28     <TextView
    29         android:id="@+id/tv_shijian"
    30         android:layout_marginTop="10dp"
    31         android:layout_width="match_parent"
    32         android:layout_height="wrap_content" />
    33 
    34     <TextView
    35         android:id="@+id/tv_dangqianshijian"
    36         android:layout_marginTop="10dp"
    37         android:layout_width="match_parent"
    38         android:layout_height="wrap_content" />
    39 
    40 </LinearLayout>

     Date date = new Date();
                    DateFormat ddf = DateFormat.getDateInstance();
                    String day = ddf.format(date);
                    DateFormat ddy = DateFormat.getTimeInstance();
                    String timeString = ddy.format(date);
                    DateFormat ddty = DateFormat.getDateTimeInstance();
                    String shjian = ddty.format(date);
                    System.out.println(day + "----" + timeString + "--------"
                            + shjian);

  • 相关阅读:
    Django开发注意事项
    欧拉筛
    求小于n且与n互质的数的个数
    扩展欧几里得
    排列组合
    crc循环冗余检验
    求乘法逆元
    逆元
    4点共面
    Git学习笔记
  • 原文地址:https://www.cnblogs.com/wangfengdange/p/4921171.html
Copyright © 2011-2022 走看看