我是android的初学者,我写了一个活动。它包含一个CountDownTimer,它从特定值开始倒计时。它还包含一个加载文本信息的Button和一个显示计数的textview。
以下是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个使用相同布局和相同计时器的活动?每个活动在textview中加载不同的内容,在点击HowTo按钮时加载不同的屏幕 2. Activity1如何设计为运行时间的1/4并将剩余时间传递给Activity2?可能吗?
我非常感谢您提供的任何帮助和建议。感谢。
答案 0 :(得分:1)
这里有几件事。
它很容易重复使用布局。在每个活动的onCreate中你只需要打电话: 的setContentView(R.layout.pushupscreen); pushupscreen.xml文件可以通过这种方式在所有活动中共享。
您可能想要做的是为所有活动的某些常见数据源保留时间戳。这可能是对SharedPreferences文件的写入:Documentation here。然后,当每个活动恢复时,通过将此时间戳与当前时间戳进行比较来检查已经过了多少时间。您还可以将时间戳作为额外内容传递给意图以启动后续活动。可以在here和here
答案 1 :(得分:0)
您可以创建一个自定义控件,它基本上是一个继承其他控件类的新类(例如LinearLayout或RelativeLayout)。然后,您可以将视图的XML加载到新布局中,或者以编程方式在控件内创建新控件。更多信息: Custom components in Android
在倒计时1/4后,您可以创建并发送Intent以在onTick方法中启动新活动。您还可以将剩余的3/4作为毫秒值(类型long
)放入intent extra中。然后,您可以在新活动中获取此值,并在其余的倒计时中调用自定义CountDownTimer子项。然后你可以在onFinish()方法完成倒计时之后最终执行你想要的东西。