-1

Androidで1つのImageViewに2つの異なる画像を含むバナーを作成したいのですが、5秒ごとに画像が次々に表示されます。

4

2 に答える 2

1

2 つの画像ビューを使用し、画像をその画像ビューに設定し、デフォルトで 5 秒後に imageview2 を削除する 5 秒ごとに imagevew1 を削除し、imageview2 を表示し、その逆を行う

于 2012-06-08T06:19:52.963 に答える
0

次のようなカスタムビューを作成します。

public static class MyBannerView extends View
{
   private int width;
   private int height;
   private Bitmap bitmap;

public RenderView(Context context)
    {
        super(context);
        init();
    }

public RenderView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        init();
    }
    public RenderView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init()
    {
        //anything you might need here
    }

    //This method is called when the View changes size like on rotation
    protected void onSizeChanged (int w, int h, int oldw, int oldh) 
    {

    width = w; //this will let you keep track of width and height should you need it.
    height = h;

    }

    protected void updateMyBanner(Bitmap b)
    {
     bitmap = b;
     invalidate(); // This will force your view to redraw itself;
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);       
            //there are four different methods for drawBitmap pick the one that
            // suites your needs the best
            canvas.drawBitmap(params which will include bitmap) 

        }

}

ここで、このビューを何らかの方法でレイアウトに配置し、5秒ごとなどにビットマップを使用してupdateMyBanner(Bitmap b)を呼び出します。これを処理するためにAsyncTaskを作成するか、 Handlerオブジェクトを使用してそれを呼び出すRunnableを作成することができます。

メインアクティビティスレッドを介してのみUIに触れることができることを覚えておくことが重要です。したがって、これにスレッドを使用することを選択した場合は、メインスレッドでハンドラーを使用して実際に更新を実行する必要があります。

于 2012-06-08T06:30:08.707 に答える