【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是否可点击

时间: 2024-11-08 22:53:02

【Android】在某一时间段控制Button是否可点击的相关文章

简单的JS控制button颜色随点击更改

先上效果图: 默认“今日”是选中状态,是行内样式: <button type="button" id="today" class="btn-link" onclick="todayDate()" style="color: #0062CC;">今日</button> 上面的日期都是点击才会切换颜色: 点击其它颜色,“今日”颜色更换成灰色 再次点击“今日”,还原回默认状态颜色 在除“今

android开发里跳过的坑——button不响应点击事件

昨天遇到一个头疼的问题,在手机上按钮事件都很正常,但是在平板上(横屏显示的状态),button点击事件不响应,代码简化如下: public class Test extends Activity implements OnClickListener{ private Button testButton = null; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated meth

【转载】android软键盘的一些控制

原文地址:http://blog.csdn.net/wang_shaner/article/details/8467688 "EditText + Button"  形成一个 "输入+按键响应" 的案例在android编程中是最常见不过的了. 但还有一些细节需要注意: 在EditText输入后,点击Button进行请求,软键盘应该自行消失 在EditText输入后,不点击Button进行请求,而是直接点击软键盘上的"回车",那么也应该能够正常响应

Android 防止button多次点击总结

long lastClick ; public void onClick(View v) { //大于一秒方个通过 if (System.currentTimeMillis() - lastClick <= 1000) { showToast("点那么快干什么!!!"); return; } lastClick = System.currentTimeMillis(); } 一种常见的写法,记录前后两次点击事件的时间,然后判断一个时间差是否在给定的LimitTime内,如果是则不

Android中用seekbar控件控制歌曲的进度

本人菜鸟一枚,在编写android中用seekbar控件控制歌曲的进度和seekbar随着歌曲的播放自动运动的程序有一些自己的见解,希望各位大牛们多多指点······ 废话先不多说了,先贴一张程序的图吧: 界面不怎么好看,没经过美化,大家将就这看一下吧. 主要思路是运用线程每隔一秒显示一下seekbar控件所在的位置,(这个是使进度条随着歌曲的进度而不断的变化,如果大家想使进度条增加的更连续,可以改变程序循环运行的时间,使其更快) 我只把关于seekbar的程度拿出来了: private int

Android开发之ListView中的Button点击设置

在ListView的Item中,如果有Button控件,那么要实现Button和Item点击都有响应,可以将Item的Layout中Button的focusable属性设为false,然后设置layout的属性android:descendantFocusability="blocksDescendants". 代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLay

[Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法

转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类控件时(比如TextView),注册ListView的监听setOnItemClickListener之后,当点击Item时候会触发onItemClick回调. 但是,当Item中存在Button(继承于Button)的控件时,onItemClick回调不会被触发. 解决方案: 在Item的布局文件

Android——编译安装Module的控制因素

在前文Android--编译系统初始化设置中有解析编译的TARGET_BUILD_VARIANT 的配置与基本区别, 其中的一些编译控制是对的但是Module的Android.mk中的LOCAL_MODULE_TAGS 控制并不全适用目前的android4.2,这里记录一下我对Module的控制过程. 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/39209341 一.LOCAL_MODULE_TAGS: 首先还是这个放在And

时间段控制代码

今天弄了个时间段控制,总感觉有问题,求大神指点啊: if (request["Action"] == "PriceLast") { int PriceId = int.Parse(request["PriceId"]); List<Control> PrcList = ccp.ModelList("id=1 order by id"); string StatData = ""; string