Я новичок в андроиде, и я написал работу. Он содержит CountDownTimer, который отсчитывает от определенного значения. Он также содержит кнопку, которая загружает текстовую информацию и текстовое изображение для отображения счетчика.Создание Singleton CountDownTimer в Android
Ниже приведен код для Activity1:
public class Screen extends Activity1 implements OnClickListener {
private static final int MILLIS_PER_SECOND = 1000;
private static final int SECONDS_TO_COUNTDOWN = 1;
TextView Time;
int totaltime;
Button startTimer, howTo, pause;
protected CountDownTimer MyTimer;
int PracticeCount;
long tot;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.pushupscreen);
getRefs();
getSpeed();
getCount();
setTotalTime();
startTimer.setOnClickListener(this);
pause.setOnClickListener(this);
}
private void getRefs() {
// Initialize layout resources
Time = (TextView) findViewById(R.id.tvTime);
startTimer = (Button) findViewById(R.id.bStart);
howTo = (Button) findViewById(R.id.btHowTo);
pause = (Button) findViewById(R.id.bPause);
howTo.setOnClickListener(this);
}
private void getTheCount() {
//get count from SharedPreferences
}
private void getSpeed() {
//get speed from SharedPreferences
}
private void setCount(){
totalTime=speed*count;}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == startTimer) {
try {
showTimer(time);
} catch (NumberFormatException e) {
// method ignores invalid (non-integer) input and waits
// for something it cant use
}
} else if (v == pause) {
MyTimer.cancel();
Timer.setText("Resume");
} else if (v == howTo) {
//Launch screen containing information
}
}
private void showTimer(long time) {
if (MyTimer != null) {
MyTimer.cancel();
}
MyTimer = new CountDownTimer(tot2, MILLIS_PER_SECOND) {
@Override
public void onTick(long millisUntilFinished) {
tot = millisUntilFinished;
long seconds = millisUntilFinished/1000;
Time.setText(String.format("%02d", seconds/60) + ":"
+ String.format("%02d", seconds % 60));
}
@Override
public void onFinish() {
Time.setText("KABOOM!");
}
}.start();
}
}
А вот файл макета для этого:
<TextView
android:id="@+id/tvTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="center"
android:padding="10dip"
android:text="@string/starttime"
android:textSize="60sp" />
<Button
android:id="@+id/bStart"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_above="@+id/tvTime"
android:text="Start" />
<Button
android:id="@+id/bPause"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_above="@+id/tvTime"
android:layout_toRightOf="@+id/btHowTo"
android:text="Pause" />
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btHowTo"
android:layout_centerHorizontal="true"
android:layout_marginTop="39dp"
android:text="25"
android:textSize="80sp"
android:textAlignment="center"/>
Мои вопросы:
1. Как я могу создать 4 действия, которые используют один и тот же макет и один и тот же таймер? Каждая активность загружает другой контент в текстовое окно и другой экран при нажатии кнопки «Хоум».
2. Как может Activity1 быть запрограммированным на 1/4 время, установленное и оставшееся время до Activity2? Является ли это возможным?
Я бы очень признателен за любую помощь и советы, которые вы можете предоставить. Благодарю.
примечание, вам нужно будет создать Bundle (http://developer.android.com/reference/android/os/Bundle.html), и добавить метку долго к нему. – akhalsa