Android установил пользовательское изображение вне текста метки - PullRequest
1 голос
/ 08 марта 2012

У меня в настоящее время есть таймер, который тикает и меняет метку для отсчета секунд. Это возможно, и если да, то как я могу изменить и изображение в поле и изображение на пользовательское значение для каждого, например Метка = 1 imagebox1 = 1.jpg Метка = 2 imagebox1 = 2.jpg Или будет проще выключить значение таймера таймера?

1 Ответ

0 голосов
/ 08 марта 2012

Я бы сделал класс 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...