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

KotlinでAndroidにスライドアニメーションを実装する方法(左から右・右から左)

この記事では、Kotlinを使用してAndroidアプリに「左から右」および「右から左」へのスライドアニメーションを実装する方法を、ステップごとにわかりやすく解説します。AndroidのTransition API(SlideクラスとTransitionManager)を活用することで、少ないコード量で滑らかなアニメーション効果を実現できます。

完成イメージ

画面上に2つのボタンを配置し、それぞれをタップすると、非表示状態だったテキストが指定した方向からスライドしながら表示されます。ボタン1つ目は「左から右」、2つ目は「右から左」へのアニメーションをトリガーします。

手順1:新規プロジェクトの作成

まず、Android Studioを開き、File → New Projectを選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、パッケージ名、保存先など)を入力し、テンプレートとして「Empty Activity」を選択しましょう。

手順2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xmlに以下のコードを追加します。ここでは、RelativeLayoutの中に2つのButtonと2つのTextViewを配置しています。TextViewは初期状態でvisibility="invisible"に設定されている点に注目してください。

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btnSlideLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="Slide Left" />
    <Button
        android:id="@+id/btnSlideRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btnSlideLeft"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:text="Slide Right" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Cristiano Ronaldo is the Best Player in the World"
        android:textSize="16sp"
        android:textStyle="bold"
        android:visibility="invisible" />
    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_centerInParent="true"
        android:text="Messi is the Best Player in the World"
        android:textSize="16sp"
        android:textStyle="bold"
        android:visibility="invisible" />
</RelativeLayout>

手順3:MainActivity.ktにアニメーションロジックを実装

次に、src/MainActivity.ktに以下のコードを記述します。ポイントはSlide()トランジションオブジェクトを生成し、slideEdgeプロパティにGravity.STARTまたはGravity.ENDを設定することです。その後、TransitionManager.beginDelayedTransition()を呼び出すことで、ビューの可視性が変化した際に自動的にスライドアニメーションが適用されます。

import android.os.Bundle
import android.transition.Slide
import android.transition.TransitionManager
import android.view.Gravity
import android.view.View
import android.widget.Button
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
    lateinit var btnSlideLeft: Button
    lateinit var btnSlideRight: Button
    lateinit var textView: TextView
    lateinit var textView1: TextView
    lateinit var relativeLayout: RelativeLayout
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        textView = findViewById(R.id.textView)
        textView1 = findViewById(R.id.textView1)
        btnSlideLeft = findViewById(R.id.btnSlideLeft)
        btnSlideRight = findViewById(R.id.btnSlideRight)
        relativeLayout = findViewById(R.id.relativeLayout)
        btnSlideLeft.setOnClickListener {
            val slide = Slide()
            slide.slideEdge = Gravity.START
            TransitionManager.beginDelayedTransition(relativeLayout, slide)
            textView.visibility = View.VISIBLE
        }
        btnSlideRight.setOnClickListener {
            val slide = Slide()
            slide.slideEdge = Gravity.END
            TransitionManager.beginDelayedTransition(relativeLayout, slide)
            textView1.visibility = View.VISIBLE
        }
    }
}

コードの解説

  • Slide(): ビューを画面の端からスライドイン/アウトさせるトランジションを生成します。
  • slideEdge: スライドの開始位置となるエッジを指定します。Gravity.STARTは左端、Gravity.ENDは右端に相当します。
  • beginDelayedTransition(): 指定した親レイアウト内で次に発生するUI変更に対して、トランジションを遅延適用します。これにより、可視性の変更がアニメーション付きで描画されます。

手順4:AndroidManifest.xmlの確認

androidManifest.xmlには以下のようにMainActivityを登録します。特別な権限は不要ですが、アクティビティがランチャーとして正しく設定されていることを確認してください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.q11">
    <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に接続しているか、エミュレータが起動していることを確認してください。Android StudioのツールバーにあるRun(実行)アイコンをクリックし、デバイスを選択してアプリを起動します。

アプリが起動したら、「Slide Left」ボタンをタップするとテキストが左からスライドインして表示され、「Slide Right」ボタンをタップすると別のテキストが右からスライドインします。このように、Transition APIを使えば数行のコードで直感的なアニメーションを簡単に追加できます。

  1. Androidで左から右へのスライドアニメーションを作成する方法

    Androidで左から右へのスライドアニメーションを作成する方法このチュートリアルでは、Androidアプリで左から右(および右から左)へのスライドアニメーションを実装する方法を解説します。Android 5.0(API 21)以降で利用できるSlideトランジションクラスとTransitionManagerを組み合わせることで、数行のコードで滑らかなスライド効果を実現できます。ステップ1:新規プロジェクトの作成Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力し新しいプロジェクトを作成します。ステップ2:レイアウトファイル(res/la

  2. 【Android】XMLファイルを使ってアニメーションを作成する方法をわかりやすく解説

    この記事では、AndroidアプリにおいてXMLファイルを使用してアニメーションを作成する方法を、実際のコード例とともに段階的に解説します。View Animation(Tween Animation)は、res/animディレクトリに配置したリソースファイルとして定義できるため、フェードインやズーム、点滅といった演出をJava側のコードをほとんど書かずに実現できるのが特徴です。 ステップ1:新規プロジェクトの作成 Android Studioを起動し、メニューから「File」⇒「New Project」を選択して新しいプロジェクトを作成します。ウィザードに従って必要な情報を入力し、プロジェク