如何在长按钮上增加+ 1?

时间:2012-02-01 23:52:24

标签: java android timer onclick intervals

我有ButtonTextView。当我将此Button保持1秒左右时,TextView应在0.5秒的间隔内逐渐增加1。

我有点迷茫,不知道我应该在这里使用什么。任何帮助表示赞赏。

编辑:我忘了说我也有onClick事件。当我点击一下它就会增加0.1(这已经有效)。

这是我到目前为止所发表的......但没有结果。活动就停止了。

btnPlusPastryDosage.setOnTouchListener(new View.OnTouchListener() 
    {           
        public boolean onTouch(View arg0, MotionEvent motion) 
        {
            Handler myHandler = new Handler();                          

            Runnable runnable = new Runnable() 
            {                                               
                public void run() 
                {                       
                    String valueStr = txtPastryDosage.getText().toString();
                    valueStr = valueStr.replace(',', '.');

                    BigDecimal value = new BigDecimal(valueStr);                
                    value = value.subtract(new BigDecimal("1"));

                    if(value.doubleValue() >= 0) txtPastryDosage.setText(String.valueOf(value));                        
                }
            };

            while(motion.getAction() == MotionEvent.ACTION_DOWN)
            {
                myHandler.postDelayed(runnable, 500);
            }                                                                       

            return false;
        }
    });

3 个答案:

答案 0 :(得分:2)

OnClick,让Handler发布一个设置按钮高度和宽度的Runnable,然后递增它。在某处保存高度/宽度。处理程序的每个post方法都应该检查按钮是否仍然按下。如果没有,请删除所有回调。

处理程序:http://developer.android.com/reference/android/os/Handler.html Runnable:http://developer.android.com/reference/java/lang/Runnable.html

答案 1 :(得分:1)

我对android UI库不太熟悉,但我相信它应该是这样的:创建一个间隔为.5秒的计时器,并设置它以便在启动时禁用它。将事件处理程序添加到按钮的OnTouchListener事件中,该事件在“将触摸事件分派到此视图时”触发,这意味着当按下手指时以及释放手指时。如果是按下手指,请启用计时器。如果是释放手指的时候,请将其禁用。

答案 2 :(得分:0)

你应该做的是有一个布尔标志,一旦点击按钮就会打开,然后在按钮被释放时关闭。当标志打开时,有一个(可能在这里最容易使用摆动)计时器开始以半秒的间隔发送事件,当你的听众得到它们时,使它增加你的textview显示的变量增加1。标志关闭后,停止计时器。

编辑:我的不好,没有看到Android标签 - 但是,这适用于普通的Java。