連載
» 2010年12月22日 00時00分 UPDATE

Androidで動く携帯Javaアプリ作成入門(21):アニメーションでAndroidに独創的な画面エフェクトを (1/2)

[緒方聡,株式会社イーフロー]

決済機能などを追加した「Android 2.3」発表!

 米グーグルは12月6日、Androidの最新バージョン2.3(コードネーム「Gingerbread」を発表し、さらに、Android 2.3を搭載した端末「Nexus S」を発表しました。

 いわゆる「おサイフケータイ」のような決済ができるNFC(Near Field Communication)機能や、SIP(Session Initiation Protocol)をサポートするIP電話機能、マルチスレッドゆえの課題となっていた複数アプリ・タスクの管理およびバッテリ管理機能の改良、3軸ジャイロスコープ対応など、開発者にとっても、ユーザーにとっても、さらに魅力的な機能が追加されました。

 Android 2.3の新機能については、今後の連載で紹介していくので、ご期待ください。

画面エフェクトを“設定”のみで追加できる

 さて、前回の「Androidアプリで“アニメーション”するための基礎知識」では、アニメーションを駆使して画面のパーツを動かしてみました。今回は、さらに一歩踏み込んで、画面遷移時にアニメーションを駆使した画面エフェクトを解説します。


 Android 2.2では、標準でそれなりの画面エフェクトが備わっているので、独自の画面エフェクトは、「ほかのアプリに差を付けたい」「差別化したい」という場合に有効でしょう。

 アニメーションの設定は、コーディングベースで行うものとXMLベースで行うものがありました。詳しくは前回の「アニメーションの4つの基本動作とアニメーション合成」と「アニメーションはXMLでリソース化できる」を参照してください。

 画面エフェクトは、後者のXMLベースで行う方法を使用します。設定が少し複雑なので、サンプルアプリケーションを見ながら説明を読み、自分で変えながら動作を確認すると理解が早いと思います。

 では、設定項目を1つずつ説明していきます。

画面エフェクト用のアニメーションリソースXMLを用意

 画面遷移時に適用するアニメーションをXMLで用意します。

図 画面遷移と必要なアニメーション定義 図 画面遷移と必要なアニメーション定義

 画面遷移時の役者として呼び出し元と呼び出し先のActivityがあり、それぞれの画面が開くとき、画面が消えるときのアニメーションを定義します。以下の表にまとめます。

名前 説明
android:activityOpenEnterAnimation 呼び出し先Activityが開くときのアニメーション
android:activityOpenExitAnimation 呼び出し元Activityが閉じるときのアニメーション
android:activityCloseEnterAnimation 呼び出し元Activityに戻るときのアニメーション
android:activityCloseExitAnimation 呼び出し先Activityが閉じるときのアニメーション
表1 アニメーション定義名と説明

 これら4つに対応するアニメーション定義XMLを「res/anim」に作成します。以下に今回のサンプルアプリの一部を説明します。

<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
res/anim/alpha_open_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />
res/anim/alpha_open_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
res/anim/alpha_close_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />
res/anim/alpha_close_exit.xml

 閉じるときにフェイドアウト、開くときにフェイドインを行うアニメーションです。今回のサンプルは必要な設定しか行っていないので、詳細な設定を行いたい場合は、前回の解説を参照してください。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。