2014-01-05 4 views
0

Я хочу использовать секундомер в своем приложении. Поэтому я пробую этот учебник, но мне нужны два изменения, и я не могу их понять.Изменить кнопку запуска, чтобы приостановить кнопку

Я нашел ошибку, когда при нажатии на кнопку запуска, а затем снова начнется снова. Так что я хочу, это кнопка запуска, которая будет меняться на кнопку паузы при нажатии и наоборот. Как переключить кнопки?

Мой макет для кнопок заключается в следующем:

<Button 

android:id=”@+id/btnPause” 
android:layout_width=”90dp” 
android:layout_marginLeft=”20dp” 
android:layout_height=”45dp” 
android:layout_centerVertical=”true” 
android:layout_toRightOf=”@+id/btnStart” 
android:text=”Pause” /> 

<Button 
android:id=”@+id/btnStart” 
android:layout_width=”90dp” 
android:layout_height=”45dp” 

android:layout_alignParentLeft=”true” 
android:layout_centerVertical=”true” 
android:layout_marginLeft=”68dp” 
android:text=”Start” /> 

Класс это:

package com.androidituts.stopwatch; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.SystemClock; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class StopwatchActivity extends Activity { 
/** Called when the activity is first created. */ 
private TextView textTimer; 
private Button startButton; 
private Button pauseButton; 
private long startTime = 0L; 
private Handler myHandler = new Handler(); 
long timeInMillies = 0L; 
long timeSwap = 0L; 
long finalTime = 0L; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

textTimer = (TextView) findViewById(R.id.textTimer); 

startButton = (Button) findViewById(R.id.btnStart); 
startButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View view) { 
startTime = SystemClock.uptimeMillis(); 
myHandler.postDelayed(updateTimerMethod, 0); 

} 
}); 

pauseButton = (Button) findViewById(R.id.btnPause); 
pauseButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View view) { 
timeSwap += timeInMillies; 
myHandler.removeCallbacks(updateTimerMethod); 

} 
}); 

} 

private Runnable updateTimerMethod = new Runnable() { 

public void run() { 
timeInMillies = SystemClock.uptimeMillis() – startTime; 
finalTime = timeSwap + timeInMillies; 

int seconds = (int) (finalTime/1000); 
int minutes = seconds/60; 
seconds = seconds % 60; 
int milliseconds = (int) (finalTime % 1000); 
textTimer.setText(“” + minutes + “:” 
+ String.format(“%02d”, seconds) + “:” 
+ String.format(“%03d”, milliseconds)); 
myHandler.postDelayed(this, 0); 
} 

}; 

} 

ответ

1

я сделал то же самое с кнопкой, которая переключаемая каждый раз при нажатии его. вот как я это сделал

объявить int state = 1

состояние означает, что функциональность и внешний вид кнопки, которая была бы. скажем, 1 is start2 is pause и 3 is stop (только для цели обучения).

установить состояние по умолчанию (в данном случае 1) и соответствующим образом установить фон

проверить состояние каждый раз, когда в onclicklistener, если состояние 1 осуществлять соответствующий функциональные возможности, изменить фон кнопки для приостановки и изменения состояния до 2, и аналогичным образом остальным остальным

Удача

0

вы можете изменить текст кнопки самостоятельно, или вы должны попробовать Toggle Button

0

сделать один видимых кнопок, просто переключите видимость от View.VISIBLE до View.GONE и сделайте обратное для другой кнопки.

0

Вы можете попробовать это:

startButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View view) { 

if(startButton.getText().equalsIgnoreCase("Start")) { 
startTime = SystemClock.uptimeMillis(); 
myHandler.postDelayed(updateTimerMethod, 0); 
} 

else if(startButton.getText().equalsIgnoreCase("Pause")) { 
timeSwap += timeInMillies; 
myHandler.removeCallbacks(updateTimerMethod); 
} 
} 
}); 
Смежные вопросы