我有Button和TextView.最初单击按钮i增加计数值并显示在TextView中.我以前用过的代码是.
buttonDayPlus.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
count = count + 1;
textView.setText(Integer.toString(count));
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我想要的是如果用户按下按钮,然后我想一个接一个递增值并显示增量值,textView并且一旦用户向上移动他的手......最终的增量值显示在textView.所以,如果有人知道帮我解决这个问题
您将需要使用Handler对象,因为您必须实现一个单独的线程来递增/递减
public class MainActivity extends Activity {
private boolean autoIncrement = false;
private boolean autoDecrement = false;
private final long REPEAT_DELAY = 50;
private Handler repeatUpdateHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
class RepetitiveUpdater implements Runnable {
@Override
public void run() {
if (autoIncrement) {
increment();
repeatUpdateHandler.postDelayed(new RepetitiveUpdater(), REPEAT_DELAY);
} else if (autoDecrement) {
decrement();
repeatUpdateHandler.postDelayed(new RepetitiveUpdater(), REPEAT_DELAY);
}
}
}
up.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
increment();
}
});
up.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
autoIncrement = true;
repeatUpdateHandler.post(new RepetitiveUpdater());
return false;
}
});
up.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && autoIncrement) {
autoIncrement = false;
}
return false;
}
});
}
public void increment() {
if (i < 100) {
i++;
TextView no = (TextView) findViewById(R.id.no);
no.setText(String.valueOf(i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
减量也是如此.
礼貌:Github,作者:Jeffrey F. Cole
您应该使用OnTouchListener而不是 OnClickListener。
然而,你的问题是模棱两可的。如果您只想在释放按钮时增加该值一次,您可以这样做:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
count++;
}
}
};
Run Code Online (Sandbox Code Playgroud)
如果您想在用户按住按钮时增加计数,您可以这样做:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
count++;
myTextView.setText("Click count: "+count);
}
};
Run Code Online (Sandbox Code Playgroud)
其中 myTextView 当然是您想要显示点击的文本视图。
| 归档时间: |
|
| 查看次数: |
9841 次 |
| 最近记录: |