我目前有一个定时器,可以勾选并更改标签以倒数秒。 是可能的,如果是这样,我如何更改和图像和图像框为每个例如自定义值 Label = 1 imagebox1 = 1.jpg Label = 2 imagebox1 = 2.jpg 或者更容易取消计时器刻度值?
答案 0 :(得分:0)
我会制作一个Sprite类。然后我会使用自动收报机中的值循环遍历我需要的各种位图。但是如果图像足够小,分辨率将它们组合在一个图像中并使用AniSprite ......
import android.graphics.*;
public class AniSprite {
public RectF target;
public Rect source;
public Bitmap bitmap;
public int width;
public int height;
public float posx;
public float posy;
public int frames;
public int curframe = 0;
public AniSprite(Bitmap bitmap, float posx, float posy, int width, int height, int frames) {
this.drawview = drawview;
this.bitmap = bitmap;
this.width = width;
this.height = height;
this.posx = posx;
this.posy = posy;
this.frames = frames;
source = new Rect(curframe * width, 0, (curframe * width) + width, height);
target = new RectF(posx, posy, posx + (width), posy + (height));
}
public void animate() {
curframe++;
if(curframe >= frames){
curframe = 0;
}
source = new Rect(curframe, 0, (curframe) + width, height);
}
public void setSourceRect(Rect rect) {
source = rect;
curframe = rect.right/width;
}
public void ChangePos(float posx, float posy) {
this.posx = posx;
this.posy = posy;
source = new Rect(curframe * width, 0, (curframe * width) + width, height);
target = new RectF(posx, posy, posx + (width), posy + (height));
}
}
所以在这个类而不是循环通过不同的位图,我做了一个大的位图,一个接一个地拥有动画的每个帧。 (使用photoshop)参数告诉屏幕上的位置x和y,帧的宽度和高度(所以每个图像),以及帧数。
执行AniSprite.animate()会将目标切换到新帧,因此您将精灵绘制为
canvas.drawBitmap(sprite.bitmap, sprite.source, sprite.target, null);