Android从标签文本中设置自定义图像

时间:2012-03-07 21:11:24

标签: java android eclipse image

我目前有一个定时器,可以勾选并更改标签以倒数秒。 是可能的,如果是这样,我如何更改和图像和图像框为每个例如自定义值 Label = 1 imagebox1 = 1.jpg Label = 2 imagebox1 = 2.jpg 或者更容易取消计时器刻度值?

1 个答案:

答案 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);