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

【Kotlin】AndroidのToast表示時間をToast.LENGTH_LONGより長く設定する方法

はじめに

このチュートリアルでは、Kotlinを使用してAndroidのToast(トースト)の表示時間を、標準のToast.LENGTH_LONGよりも長く設定する方法を解説します。

Android標準のToast APIでは、表示時間はToast.LENGTH_SHORT(約2秒)かToast.LENGTH_LONG(約3.5秒)の2種類しか指定できません。そこで本記事では、CountDownTimerを組み合わせることで、任意のミリ秒単位でToastを表示し続けるテクニックを紹介します。

実装手順

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

Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力のうえ新しいプロジェクトを作成してください。

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

res/layout/activity_main.xml に以下のコードを記述します。画面中央に「Display Toast」ボタンを配置したシンプルなレイアウトです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Display Toast"
        android:onClick="showToast"
        android:textColor="@android:color/background_dark" />
</RelativeLayout>

ステップ3:MainActivity.ktを実装する

src/MainActivity.kt に以下のコードを追加します。ポイントは、CountDownTimeronTick()内で定期的にshow()を呼び出し、Toastが消える前に再表示を繰り返している点です。

import android.os.Bundle
import android.os.CountDownTimer
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var mToastToShow: Toast

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
    }

    fun showToast(view: View) {
        // 表示したい合計時間(ミリ秒)。ここでは10秒に設定
        val toastDurationInMilliSeconds = 10000
        mToastToShow = Toast.makeText(this, "Hello world, I am a toast.", Toast.LENGTH_LONG)

        val toastCountDown: CountDownTimer
        toastCountDown = object : CountDownTimer(toastDurationInMilliSeconds.toLong(), 5000 /*Tick duration*/) {
            override fun onTick(millisUntilFinished: Long) {
                mToastToShow.show()
            }

            override fun onFinish() {
                mToastToShow.cancel()
            }
        }
        mToastToShow.show()
        toastCountDown.start()
    }
}

コードの解説:

  • toastDurationInMilliSeconds:Toastを表示したい合計時間(ミリ秒)です。この例では10秒(10000ms)に設定しています。
  • CountDownTimer(10000, 5000):第1引数が総時間、第2引数がティック間隔です。5000msごとにonTick()が呼ばれ、そのたびにshow()を実行することでToastを再表示します。
  • onFinish():カウントダウン完了時にcancel()を呼び出し、Toastを確実に非表示にします。

ステップ4:AndroidManifest.xmlを確認する

androidManifest.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.q1">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行して動作を確認する

それでは、実際にアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続した状態で、プロジェクトのアクティビティファイルを開き、ツールバーの「Run」アイコン【Kotlin】AndroidのToast表示時間をToast.LENGTH_LONGより長く設定する方法をクリックします。デバイス一覧から接続した端末を選択すると、スマートフォンの画面にアプリが起動します。

「Display Toast」ボタンをタップすると、通常のLENGTH_LONG(約3.5秒)よりも長い10秒間、Toastメッセージが表示され続けることが確認できます。

【Kotlin】AndroidのToast表示時間をToast.LENGTH_LONGより長く設定する方法

まとめ

Toastの表示時間は公式APIではLENGTH_SHORTとLENGTH_LONGの2択しかありませんが、CountDownTimerと組み合わせることで自由な時間にカスタマイズできます。ユーザーへの注意喚起や案内など、少し長めにメッセージを表示したい場面でぜひ活用してください。

  1. 【Android】コードからImageViewのマージン(余白)を設定する方法

    この記事では、Androidアプリ開発においてJavaコードを使ってImageViewのマージン(余白)を動的に設定する方法を解説します。レイアウトXMLではなくプログラム側で余白を制御したい場合に役立つテクニックです。全体の流れ今回のサンプルでは、RelativeLayoutの中に配置したImageViewに対して、setMargins()メソッドを使って上下左右すべてに余白を設定します。ステップ1:新規プロジェクトを作成するまず、Android Studioで新しいプロジェクトを作成しましょう。メニューから「File ⇒ New Project」を選択し、必要な項目を入力してプロジェクトを

  2. 【Android】Toast.LENGTH_LONGより長くToastを表示し続ける方法を解説

    AndroidのToast表示時間を自由にコントロールする方法 AndroidのToastは、Toast.LENGTH_SHORT(約2秒)とToast.LENGTH_LONG(約3.5秒)の2種類しか用意されておらず、それ以上長く表示したい場合にはひと工夫が必要です。 本記事では、CountDownTimerを組み合わせることで、Toastの表示時間を10秒など任意の長さに設定するテクニックを、実際のサンプルコードとともにわかりやすく解説します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File → New Project」を選択して新しい