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.