Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidでYear APIクラスを使ってうるう年を判定する方法

この記事では、JavaのYear APIクラス(java.time.Year)を使用して、Androidアプリ内で現在の年がうるう年かどうかを判定する方法を解説します。java.timeパッケージはAndroid 8.0(APIレベル26)以降で利用可能なため、実行時のバージョンチェックもあわせて紹介します。

ステップ1:新しいプロジェクトを作成する

Android Studioを開き、「File」→「New Project」を選択して、必要な項目をすべて入力し、新しいプロジェクトを作成してください。

ステップ2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xmlに以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Local Date"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

上記のコードでは、画面中央に配置したTextViewを使って、現在の年がうるう年かどうかを表示するようにしています。

ステップ3:MainActivity.javaにコードを追加する

src/MainActivity.javaに以下のコードを追加します。

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.time.Year;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.date);
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            Year year = Year.now();
            String leap;
            if(year.isLeap()) {
                leap = " is leap year";
            } else {
                leap = " is not leap year";
            }
            textView.setText(String.valueOf(year+leap));
        }
   }
}

コードのポイント

  • Year.now():システムの現在日時に基づいて、現在の年を表すYearオブジェクトを取得します。
  • isLeap()メソッド:その年がうるう年であればtrue、そうでなければfalseを返します。グレゴリオ暦のルール(4で割り切れる年はうるう年、ただし100で割り切れて400で割り切れない年は平年など)に従って自動的に判定されます。
  • バージョンチェック:java.timeパッケージはAPIレベル26以降でしか使えないため、Build.VERSION.SDK_INTによる条件分岐でクラッシュを防いでいます。

アプリを実行して結果を確認する

それでは、アプリケーションを実行してみましょう。ここでは、実際のAndroid端末がパソコンに接続されていることを前提とします。

Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーにある「Run」アイコンをクリックします。表示された選択肢から接続済みのモバイルデバイスを選択すると、端末の画面に以下のような結果が表示されます。

AndroidでYear APIクラスを使ってうるう年を判定する方法

上記の実行結果では、「現在の年はうるう年ではない」と表示されています。このように、YearクラスのisLeap()メソッドを使えば、複雑なうるう年の計算式を自分で実装することなく、シンプルなコードで正確に判定できるのが大きなメリットです。

  1. 【Android】JavaMail APIを使用してメールを送信する方法を解説

    はじめに この記事では、JavaMail APIを使用してAndroidアプリからメールを送信する方法を、ステップごとに詳しく解説します。画面に入力した宛先・件名・本文をもとに、GmailのSMTPサーバー経由でメールを送信するシンプルなサンプルアプリを作成していきます。 手順1:新規プロジェクトの作成 Android Studioを起動し、「File」→「New Project」を選択して、必要事項を入力して新しいプロジェクトを作成します。 手順2:レイアウトファイル(activity_main.xml)の作成 res/layout/activity_main.xmlに以下のコードを記述しま

  2. Android端末のGPSが有効になっているか確認する方法【サンプルコード付き】

    はじめに この記事では、Android端末のGPS(位置情報)が現在有効になっているかどうかを、アプリからプログラム的に判定する方法を解説します。さらに、GPSが無効だった場合にユーザーへ通知し、位置情報の設定画面へ誘導するダイアログを表示するところまでを実装します。 実装手順 ステップ1:Android Studioで新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。 ステップ2:レイアウトファイル(activity_main.xml)を編集する