在 setOnClickListener 的帮助下,我能够在相应的“-”或“-”按钮单击上递增/递减。 但如果我继续按住(长按)“+”或“-”按钮,我想继续增加/减少尊重计数器。就像在 map 中一样,当我们触摸“放大”按钮并将取景器放在其上时, map 会不断放大,直到我们移开手指。
我尝试用 setOnLongClickListener 来做这件事和setOnTouchListener,搜索了stackoverflow论坛但找不到帮助。
这是我的 Android Activity 的完整 Java 代码。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv_1= (TextView) findViewById(R.id.tv_1);
Button btn_1= (Button) findViewById(R.id.btn_1);
Button btn_2= (Button) findViewById(R.id.btn_2);
final TextView tv_2= (TextView) findViewById(R.id.tv_2);
Button btn_3= (Button) findViewById(R.id.btn_3);
Button btn_4= (Button) findViewById(R.id.btn_4);
final TextView tv_3= (TextView) findViewById(R.id.tv_3);
Button btn_5= (Button) findViewById(R.id.btn_5);
Button btn_6= (Button) findViewById(R.id.btn_6);
Button btn_7= (Button) findViewById(R.id.btn_7);
btn_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_1.getText().toString();
int cnt= Integer.parseInt(count);
cnt++;
tv_1.setText(""+cnt);
}
});
btn_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_1.getText().toString();
int cnt= Integer.parseInt(count);
cnt--;
tv_1.setText(""+cnt);
}
});
btn_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_2.getText().toString();
int cnt= Integer.parseInt(count);
cnt++;
tv_2.setText(""+cnt);
}
});
btn_4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_2.getText().toString();
int cnt= Integer.parseInt(count);
cnt--;
tv_2.setText(""+cnt);
}
});
btn_5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_3.getText().toString();
int cnt= Integer.parseInt(count);
cnt++;
tv_3.setText(""+cnt);
}
});
btn_6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String count=tv_3.getText().toString();
int cnt= Integer.parseInt(count);
cnt--;
tv_3.setText(""+cnt);
}
});
btn_7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv_1.setText(""+0);
tv_2.setText(""+0);
tv_3.setText(""+0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
最佳答案
我建议您使用OnTouchListener
。我们调用新线程,该线程将一直运行,直到您在 while
循环中按下按钮为止:
public class MainActivity extends Activity implements OnTouchListener {
...
btn_1.setOnTouchListener(this);
...
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction()==MotionEvent.ACTION_DOWN){
doPressDown();
}
else if (arg1.getAction()==MotionEvent.ACTION_UP){
doPressRelease();
}
return true;
}
private void doPressDown() {
isPressed = true;
new Thread(() -> {
while (isPressed == true) {
// here we increment till user release the button
}
}).start();
}
private void doPressRelease(){
isPressed = false;
}
}
关于java - 我想在长按 "+"或 "-"按钮时继续增加/减少计数器.... Android setOnLongClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20017287/