画像をアニメーションさせるサンプル・プログラムを2パターン作成してみました。
まずは1つ目。
<設計方針>
画面のレイアウトは、FrameLayout にして、
FrameLayout 一杯に MapView と ImageView を順番に表示します。
そして、ImageView を AnimationDrawable でアニメーションさせます。
FrameLayout 一杯に MapView と ImageView を順番に表示します。
そして、ImageView を AnimationDrawable でアニメーションさせます。
<問題点>
画像を表示させる位置が、Google Map 上の位置 (GeoPoint) に対応させることができません。
(というか分かりません。ひょっとしたら何らかの方法があるのかもしれません。。)
そのため、画面の左上のすみっこ等、Google Map の座標(緯度/経度)とは関係なく表示させればよい、
というときくらいには使えるかな~という方法です。
(というか分かりません。ひょっとしたら何らかの方法があるのかもしれません。。)
そのため、画面の左上のすみっこ等、Google Map の座標(緯度/経度)とは関係なく表示させればよい、
というときくらいには使えるかな~という方法です。
以下にポイントとなるソースを貼り付けます。
まずはレイアウトです。
FrameLayout に対し、MapView、ImageView の順で表示させます。
main.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" /> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout>
次は、AnimationDrawable に読み込ませるアニメーション・リストです。
drawable フォルダには、person_01.png ~ person_60.png まで 60 の画像ファイルを配置しています。
animation.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/person_01" android:duration="50" /> <item android:drawable="@drawable/person_02" android:duration="50" /> <item android:drawable="@drawable/person_03" android:duration="50" /> <item android:drawable="@drawable/person_04" android:duration="50" /> (途中省略) <item android:drawable="@drawable/person_58" android:duration="50" /> <item android:drawable="@drawable/person_59" android:duration="50" /> <item android:drawable="@drawable/person_60" android:duration="50" /> </animation-list>
最後は Activity (MapActivity継承) クラスです。
MapTestActivity.java
package jp.kochi.test; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; public class MapTestActivity extends MapActivity { /** Called when the activity is first created. */ AnimationDrawable mAnimationDrawable; ImageView mImageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); mImageView = (ImageView) findViewById(R.id.imageview); mImageView.setBackgroundResource(R.anim.animation); mAnimationDrawable = (AnimationDrawable) mImageView.getBackground(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); mAnimationDrawable.start(); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
以下は実行画面です。
分かりにくいですが、左上の画像が変化(アニメーション)しています。