OverlayにImageViewを表示する方法について

295 views
Skip to first unread message

Sasaki

unread,
Jan 31, 2010, 12:08:13 AM1/31/10
to 日本Androidの会
初めまして、Sasakiと申します。

Overlayの使い方について質問があります。

地図上にImageViewを表示してアニメーションしようと思っているのですが、
表示できなくて困っています。

調べてもBmpをdrawする方法しかなくて・・・。

ご存知の方がいらっちゃいましたら、ご教授願います。

寺西良太

unread,
Jan 31, 2010, 4:53:27 AM1/31/10
to android-g...@googlegroups.com
Sasaki様

 寺西と申します。MapView上にImageViewを配置したいということでしょうか?仮にそうであれば、カメラのプレビュー上にImageViewを配置するのと同じ要領でやれば可能です。具体的には、onCreate()内に以下のようなコードを追加すればよいかと思います。

ImageView imgview = new ImageView(this);
imgview.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.androidmarker));
addContentView(imgview, new LayoutParams(100, 100));

 なお、ItemizedOverlayはコンストラクタのdefaultmarkerにTransitionDrawableを受け取れるかと思いますので、アニメーションを行いたいのであれば、そちらの利用を検討されると良いかも知れません。

寺西


2010年1月31日14:08 Sasaki <ujmu...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


Sasaki

unread,
Jan 31, 2010, 6:00:17 AM1/31/10
to 日本Androidの会
寺西様

回答ありがとうございます。
無事Mapview上にImageViewを表示することができました。
無理にOverlayを使わなくてもよかったんですね・・・。

TransitionDrawableについて調べ始めたのですが、
予想以上に載せているサイトが少なく、どのように使用するのかわからない状況です。

http://www.techdoctranslator.com/android/guide/graphics/2d-graphics
こちらのサイトではTransitionDrawableとImageViewを別々に定義していますが、
ItemizedOverlayのコンストラクタのdefaultmarkerに渡す際には
TransitionDrawableにイメージデータを渡すように使用するがあると思うのですが、
どのように記述するのか調べてもわからない状況です。

引き続き調査していきますが、お答えいただけると幸いです。

On 1月31日, 午後6:53, 寺西良太 <uec.is.comp...@gmail.com> wrote:
> Sasaki様
>
> 寺西と申します。MapView上にImageViewを配置したいということでしょうか?仮にそうであれば、カメラのプレビュー上にImageViewを配置 するのと同じ要領でやれば可能です。具体的には、onCreate()内に以下のようなコードを追加すればよいかと思います。


>
> ImageView imgview = new ImageView(this);
> imgview.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawab le.androidmarker));
> addContentView(imgview, new LayoutParams(100, 100));
>
> なお、ItemizedOverlayはコンストラクタのdefaultmarkerにTransitionDrawable
> を受け取れるかと思いますので、アニメーションを行いたいのであれば、そちらの利用を検討されると良いかも知れません。
>
> 寺西
>

> 2010年1月31日14:08 Sasaki <ujmuj...@gmail.com>:


>
>
>
> > 初めまして、Sasakiと申します。
>
> > Overlayの使い方について質問があります。
>
> > 地図上にImageViewを表示してアニメーションしようと思っているのですが、
> > 表示できなくて困っています。
>
> > 調べてもBmpをdrawする方法しかなくて・・・。
>
> > ご存知の方がいらっちゃいましたら、ご教授願います。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。

Sasaki

unread,
Feb 1, 2010, 7:51:48 AM2/1/10
to 日本Androidの会
すみません。盛大に勘違いしていました。

上記サイトをよく見るとXMLのandroid:drawableで画像ソースを指定していますね。
ただこれがどのような効果(アニメーション)なのかは、未だにわかりません・・・。

試しにAnimationDrawableの方でItemizedOverlayに渡してMapview上に出してみました。
出たことは出たのですが、今度はアニメーションの開始(start)をどのようにしたら良いのか不明です。

不勉強で申し訳ないのですが、サンプルなど無いでしょうか・・・。

寺西良太

unread,
Feb 1, 2010, 12:29:52 PM2/1/10
to android-g...@googlegroups.com
Sasaki様

 寺西です。先日のTransitionDrawableはAnimationDrawableの誤りでした。さて、そのAnimationDrawable.start()をどこで呼べばアニメーションが機能するかに関してですが、実際のところ、私のところでもうまく動いてくれません。そこで、以下のようなOverlayItemをextendしたクラスを用いるワークアラウンドを考えました。ご参考までにどうぞ。

import android.graphics.drawable.AnimationDrawable;
import android.os.Handler;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;


public class AnimationOverlayItem extends OverlayItem implements Runnable
{
    private Handler mHandler;
    private AnimationDrawable mAnimationDrawable;
    private int current_frame;
    private MapView mMapView;
   
    public AnimationOverlayItem(
            GeoPoint point,
            String title,
            String snippet,
            AnimationDrawable adrawable,
            MapView mview)
    {
        super(point, title, snippet);

        mHandler = new Handler();
       
        mAnimationDrawable = adrawable;

        current_frame = 0;

        mMapView = mview;

        mHandler.postDelayed(this, mAnimationDrawable.getDuration(current_frame));
    }

    @Override
    public void run()
    {
        if(current_frame == mAnimationDrawable.getNumberOfFrames() - 1)
            current_frame = 0;
        else
            current_frame++;

        mAnimationDrawable.selectDrawable(current_frame);
   
        mMapView.invalidate();

        mHandler.postDelayed(this, mAnimationDrawable.getDuration(current_frame));
    }
}

2010年2月1日21:51 Sasaki <ujmu...@gmail.com>:

Sasaki

unread,
Feb 2, 2010, 6:33:32 AM2/2/10
to 日本Androidの会
寺西様

回答ありがとうございます。
スレッドでアニメーション(コマ送り)をするという回避策ですね。勉強になります。
参考にさせていただきます。

On 2月2日, 午前2:29, 寺西良太 <uec.is.comp...@gmail.com> wrote:
> Sasaki様
>
> 寺西です。先日のTransitionDrawableはAnimationDrawableの誤りでした。さて、そのAnimationDrawable.s tart()をどこで呼べばアニメーションが機能するかに関してですが、実際のところ、私のところでもうまく動いてくれません。そこで、以下のようなOverl ayItemをextendしたクラスを用いるワークアラウンドを考えました。ご参考までにどうぞ。

> 2010年2月1日21:51 Sasaki <ujmuj...@gmail.com>:

> > > > > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com><android-gro
> > up-japan%2Bunsu...@googlegroups.com<up-japan%252Bunsubscribe@googlegrou ps.com>


> > >にメールを送信してください。
> > > > > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > からこのグループにアクセスしてください。
>

Reply all
Reply to author
Forward
0 new messages