我有Button
和TextView
。当我将此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;
}
});
答案 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。