我想在 Android 中创建一个横幅,在一个 ImageView 中有两个不同的图像,每 5 秒图像应该一个接一个地交替。
问问题
863 次
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 回答