【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);
    }

}

【Android】在某一时间段控制Button是否可点击,布布扣,bubuko.com

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

上一篇:转载 Deep learning:七(基础知识_2)


下一篇:如何解包,编辑,重新打包boot images