Introduction de la section :
Cette section vous présente plusieurs contrôles fournis par Android pour afficher l'heure. Il s'agit de : TextClock, AnalogClock, Chronometer. Il y a aussi un DigitalClock obsolète, mais nous ne l'aborderons pas ! Très bien, commençons cette section !
1. TextClock (horloge textuelle)
TextClock est un composant introduit après Android 4.2 (API 17) pour remplacer DigitalClock !
TextClock peut afficher la date et l'heure actuelles sous forme de chaîne, il est donc recommandé d'utiliser TextClock après Android 4.2.
Ce composant est recommandé pour une utilisation dans les systèmes Android en mode 24 heures. TextClock propose deux formats différents : l'un affiche l'heure et la date au format 24 heures, et l'autre affiche l'heure et la date au format 12 heures. La plupart des gens préfèrent les paramètres par défaut.
Vous pouvez appeler la méthode is24HourModeEnabled() fournie par TextClock pour vérifier si le système utilise l'affichage de l'heure en 24 heures ! En mode 24 heures :
- Si l'heure n'est pas obtenue, utilisez d'abord la valeur de retour de getFormat24Hour();
- Si la récupération échoue, utilisez la valeur de retour de getFormat12Hour();
- Si tout ce qui précède échoue, utilisez la valeur par défaut ;
De plus, il nous fournit les méthodes suivantes, ainsi que les méthodes get correspondantes :
| Nom de l'attribut | Méthode associée | Description |
|---|---|---|
| android:format12Hour | setFormat12Hour(CharSequence) | Définir le format 12 heures |
| android:format24Hour | setFormat24Hour(CharSequence) | Définir le format 24 heures |
| android:timeZone | setTimeZone(String) | Définir le fuseau horaire |
En fait, la majeure partie du temps est consacrée à définir le format de l'heure, c'est-à-dire la CharSequence à l'intérieur ! Voici des modèles d'utilisation et des résultats courants :
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MM/dd/yy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="E, MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEEE, MMMM dd, yyyy h:mmaa"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="Noteworthy day: 'M/d/yy"/>
Résultat de l'exécution:

PS :De plus, minsdk doit être supérieur ou égal à 17 !
2. AnalogClock (horloge analogique)
C'est comme l'image ci-dessous :

Sur le site officiel, nous pouvons voir ces trois attributs :

Ce sont respectivement : les images de l'arrière-plan du cadran, de l'aiguille des heures et de l'aiguille des minutes, que nous pouvons personnaliser nous-mêmes :
L'exemple de code est le suivant :
<AnalogClock
android:layout_width="100dp"
android:layout_height="100dp"
android:dial="@mipmap/ic_c_bg"
android:hand_hour="@mipmap/zhen_shi"
android:hand_minute="@mipmap/zhen_fen" />
Résultat de l'exécution:

3. Chronometer (Minuteur)
Comme son titre l'indique, il s'agit d'un simple minuteur. Passons directement à un exemple d'utilisation :
Exemple d'utilisation :
Code d'implémentation :
Code de mise en page :
<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:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chronometer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FF0000"
android:textSize="60dip" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dip"
android:orientation="horizontal">
<Button
android:id="@+id/btnStart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="开始记时" />
<Button
android:id="@+id/btnStop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止记时" />
<Button
android:id="@+id/btnReset"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="重置" />
<Button
android:id="@+id/btn_format"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="格式化" />
</LinearLayout>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener,Chronometer.OnChronometerTickListener{
private Chronometer chronometer;
private Button btn_start,btn_stop,btn_base,btn_format;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
chronometer = (Chronometer) findViewById(R.id.chronometer);
btn_start = (Button) findViewById(R.id.btnStart);
btn_stop = (Button) findViewById(R.id.btnStop);
btn_base = (Button) findViewById(R.id.btnReset);
btn_format = (Button) findViewById(R.id.btn_format);
chronometer.setOnChronometerTickListener(this);
btn_start.setOnClickListener(this);
btn_stop.setOnClickListener(this);
btn_base.setOnClickListener(this);
btn_format.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnStart:
chronometer.start();// 开始计时
break;
case R.id.btnStop:
chronometer.stop();// 停止计时
break;
case R.id.btnReset:
chronometer.setBase(SystemClock.elapsedRealtime());// 复位
break;
case R.id.btn_format:
chronometer.setFormat("Time:%s");// 更改时间显示格式
break;
}
}
@Override
public void onChronometerTick(Chronometer chronometer) {
String time = chronometer.getText().toString();
if(time.equals("00:00")){
Toast.makeText(MainActivity.this,"时间到了~",Toast.LENGTH_SHORT).show();
}
}
}
Capture d'écran d'exécution :

Résumé de la section :
Cette section a brièvement présenté trois composants : TextClock, AnalogClock et Chronometer. Comme vous pouvez le voir à la longueur, ces choses ne sont pas beaucoup utilisées, presque jamais... Sachez juste qu'elles existent, l'utilisation est aussi très simple... Voilà, cette section se termine ici. Merci.