首页 > 代码库 > 【Android】在某一时间段控制Button是否可点击

【Android】在某一时间段控制Button是否可点击

参考:http://blog.chinaunix.net/uid-9688646-id-1998393.html

好久没更新博客了,或许是因为现在的工作比较轻松。这种现象不乐观啊。今天朋友问我,“一个按钮,比如我想让他周一和周三和周六的20:30-21:00这个时间段能点击其余时间不能点击”。我若假思索,便给他说了思路,然后顺便给朋友实现了下。首先,需要实现一个判断当前为礼拜几的方法,以及获取当前时间的方法,我把这两个方法放进了一个工具类。具体代码如下:

import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DataUtils {    private static final DateFormat FORMATOR_TIME = new SimpleDateFormat(            "HH:mm:ss");    public static String getStringTime(Date date) {        return FORMATOR_TIME.format(date);    }    /**     * 0 表示周末 ,1-6表示周一到周六     *      * @return     */    public static final int getCurrentDayOfWeek() {        return Calendar.getInstance().get(Calendar.DAY_OF_WEEK) - 1;    }}


核心代码:

import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.Button;public class MainActivity extends Activity {    Button btn;    private Timer mTimer;    private TimerTask mTimerTask;    protected static final int UPDATE_TEXT = 0;    private Handler mHandler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn = (Button) findViewById(R.id.btn);        mTimer = new Timer();        mHandler = new Handler() {            @Override            public void handleMessage(Message msg) {                switch (msg.what) {                case UPDATE_TEXT:                    Date curDate = new Date(System.currentTimeMillis());// 获取当前时间                    String str_time = DataUtils.getStringTime(curDate);                    btn.setText(str_time);                    int a = DataUtils.getCurrentDayOfWeek();                    switch (a) {                    case 1:                        btn.setClickable(true);                        break;                    case 3:                        Calendar cal = Calendar.getInstance();// 当前日期                        int hour = cal.get(Calendar.HOUR_OF_DAY);// 获取小时                        int minute = cal.get(Calendar.MINUTE);// 获取分钟                        int minuteOfDay = hour * 60 + minute;// 从0:00分开是到目前为止的分钟数                        final int start = 20 * 60 + 30;// 起始时间 20:30的分钟数                        final int end = 20 * 60+59;// 结束时间 21:00的分钟数                        if (minuteOfDay >= start && minuteOfDay <= end) {                            System.out.println("在外围内");                            btn.setText("购买彩票!");                            btn.setClickable(true);                        } else {                            System.out.println("在外围外");                            btn.setClickable(false);                        }                        break;                    case 6:                        btn.setClickable(true);                        break;                    default:                        break;                    }                    break;                }            }        };        mTimerTask = new TimerTask() {            @Override            public void run() {                mHandler.sendEmptyMessage(UPDATE_TEXT);            }        };        mTimer.schedule(mTimerTask, 1000, 1000);    }}