-1

我想在 Android 中创建一个横幅,在一个 ImageView 中有两个不同的图像,每 5 秒图像应该一个接一个地交替。

4

2 回答 2

1

使用2个imageviews,并将图像设置为该imageview,默认情况下使imageview2在5秒后消失,使imagevew1消失,imageview2为可见,反之亦然,每5秒

于 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,因此如果您选择为此使用线程,则需要在主线程上使用Handler来实际执行更新。

于 2012-06-08T06:30:08.707 回答