Я пытаюсь сделать меню на основе растровых изображений.Само меню должно быть подвижным с помощью событий перемещения экрана, в основном я хочу перетаскивать кнопки на виде.Кнопка также включает обнаружение столкновений, поэтому, когда они касаются друг друга, они отскакивают друг от друга.
Но у меня возникают некоторые проблемы, когда дело касается рисования моих растровых изображений.В настоящее время я использую прямоугольник для масштабирования своего растрового изображения в соответствии с окном моего устройства.Хочу я хочу и не могу получить в настоящее время для плавных движений моих растровых изображений без мерцания.Это единственный вариант перейти к открытию гл?Или я пропустил что-то большое в своем коде?
Это мой вид поверхности для рисования каждой кнопки, где MenuButton - это класс, который содержит растровое изображение и обновляет свою позицию в соответствии с движением касания и перетаскивания.
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
for(MenuButton menuButton : menuButtonSprites) {
menuButton.onDraw(canvas);
}
}
Я хочу, чтобы растровые изображения масштабировались до ширины каждого устройства, и для этого я использую прямоугольник для растрового изображения, чтобы соответствовать.
public MenuButton(MenuView v, Bitmap bmp, int yPosition){
this.menuView = v;
this.menuButton = bmp;
this.xMax = v.getWidth();
this.yPosistion = yPosition;
menuButtonRectangle = new Rect(xMin, this.yPosistion-yMin, xMax, this.yPosistion+yMax);
}
public void update(int y){
if(menuButtonPressed)
{
this.yPosistion = y;
menuButtonRectangle.set(xMin, yPosistion-yMin, xMax, yPosistion+yMax);
}
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(menuButton, null, menuButtonRectangle, null);
}
У меня также есть нить, которая обновляет ничью
public void run() {
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
Canvas c = null;
while (running) {
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
}
finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
}
catch (Exception e) {
}
}
}
Я действительно не знаю, что я делаю неправильно, и почему мне не удается добиться плавного движения моих кнопок.Это недостаток использования canvas или я пропустил что-то действительно важное: D?