Androidで1つのImageViewに2つの異なる画像を含むバナーを作成したいのですが、5秒ごとに画像が次々に表示されます。
質問する
863 次
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 に答える