早上全部,Android - 按住重複按鈕
我會承認,我是新來的開發人員,並試着在Android上工作。我一直在試圖搜索'淨找到如何實現一些「保持按鈕重複行動」的建議「 - 我已經從按鈕創建了一個自定義數字鍵盤,並希望有類似退格的行爲。到目前爲止,我曾經拜訪過一位沒有編碼過Android的朋友,但是他做了很多C#/ Java,並且似乎知道他在做什麼。
下面的代碼工作得很好,但我覺得它可以做得更整齊。我很抱歉,如果我錯過了點點滴滴,但希望這解釋了我的方法。我認爲onTouchListener是可以的,但線程處理的方式並不合適。
有沒有更好或更簡單的方法來做到這一點?
感謝,
中號
public class MyApp extends Activity {
private boolean deleteThreadRunning = false;
private boolean cancelDeleteThread = false;
private Handler handler = new Handler();
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
//May have missed some declarations here...
Button_Del.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
{
handleDeleteDown();
return true;
}
case MotionEvent.ACTION_UP:
{
handleDeleteUp();
return true;
}
default:
return false;
}
}
private void handleDeleteDown() {
if (!deleteThreadRunning)
startDeleteThread();
}
private void startDeleteThread() {
Thread r = new Thread() {
@Override
public void run() {
try {
deleteThreadRunning = true;
while (!cancelDeleteThread) {
handler.post(new Runnable() {
@Override
public void run() {
deleteOneChar();
}
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(
"Could not wait between char delete.", e);
}
}
}
finally
{
deleteThreadRunning = false;
cancelDeleteThread = false;
}
}
};
// actually start the delete char thread
r.start();
}
});
}
private void handleDeleteUp() {
cancelDeleteThread = true;
}
private void deleteOneChar()
{
String result = getNumberInput().getText().toString();
int Length = result.length();
if (Length > 0)
getNumberInput().setText(result.substring(0, Length-1));
//I've not pasted getNumberInput(), but it gets the string I wish to delete chars from
}
並沒有真正像一個問題。該代碼看起來o.k.雖然。 – 2010-11-26 11:23:51
同意,問題是是否有更好的,Android的具體方式來做到這一點。感覺像很多代碼來獲得如此微不足道的東西。 – Mark 2010-11-26 12:43:52