参考: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); } }