簡単に時間を計測するタイマー カウンターを作るにはChronometerが便利です。
ゲームで経過時間をささっと表示させるには持ってこいです。
Android Studio
2021.2.1
2021.2.1
Chronometer
Chronometerは基本的に1秒刻みです。もっと短い時間で刻みたい場合は他の方法を使います。
レイアウトで表示を決定します
1 2 3 4 |
<Chronometer android:id="@+id/chronometer" android:layout_width="wrap_content" android:layout_height="wrap_content" /> |
Activity側からは開始、停止などの操作をします
1 2 3 4 5 6 7 |
Chronometer chronometer = findViewById(R.id.chronometer); // 開始 chronometer.start(); // 停止 chronometer.stop(); // リセット chronometer.setBase(SystemClock.elapsedRealtime()); |
まとめるとこうなります
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//package your.package.name; import androidx.appcompat.app.AppCompatActivity; import android.os.SystemClock; import android.os.Bundle; import android.widget.Button; import android.widget.Chronometer; public class MainActivity extends AppCompatActivity { private Chronometer chronometer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chronometer = findViewById(R.id.chronometer); Button startButton = findViewById(R.id.start_button); Button stopButton = findViewById(R.id.stop_button); startButton.setOnClickListener( v -> { // set the base to the current time just before calling start() chronometer.setBase(SystemClock.elapsedRealtime()); chronometer.start(); }); stopButton.setOnClickListener( v -> { chronometer.stop(); }); } } |
レイアウトです
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <Chronometer android:id="@+id/chronometer" android:textSize="60sp" android:textColor="#00f" android:layout_margin="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:text="@string/start" android:id="@+id/start_button" android:layout_margin="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:text="@string/stop" android:id="@+id/stop_button" android:layout_margin="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> |
リソース
strings.xml
1 2 3 4 5 |
<resources> <string name="app_name">YourAppName</string> <string name="start">start</string> <string name="stop">stop</string> </resources> |
Chronometerは設定が簡単ですが、その反面細かな設定はそのままではできません
カスタムで作っていくことになります
また、その他にもタイマーを作る方法があります