#android #matrix #bitmap #surfaceview
#Android #матрица #растровое изображение #surfaceview
Вопрос:
Я пытаюсь переместить растровое изображение из какой-то точки в точку, к которой я прикоснулся… но дела идут не очень хорошо.
Render.java (расширяет класс потока)
public void run() {
Canvas canvas;
while (runFlag) {
long now = System.currentTimeMillis();
long elapsedTime = now - prevTime;
if (elapsedTime > 30){
prevTime = now;
if (touched ==true) {
matrix.postTranslate(touched_x, touched_y);
touched =false;
}
}
canvas = null;
try {
canvas = surfaceHolder.lockCanvas(null);
synchronized (surfaceHolder) {
if (touched ==true) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(picture, matrix, null);
touched = false;
}
}
}
finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
Здесь я создаю флажок, к которому прикасаюсь, чтобы проверять его при рисовании… кажется, это не очень хорошая идея.
View.java (Класс SurfaceView)
public boolean onTouchEvent(MotionEvent event) {
touched_x = event.getX();
touched_y = event.getY();
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
touched = true;
break;
case MotionEvent.ACTION_MOVE:
touched = true;
break;
case MotionEvent.ACTION_UP:
touched = false;
break;
case MotionEvent.ACTION_CANCEL:
touched = false;
break;
case MotionEvent.ACTION_OUTSIDE:
touched = false;
break;
default:
}
return false;
}
Ответ №1:
я думаю, что в вашем коде нет постоянства для изображения, которое вы пытаетесь показать. код выглядит так в одном кадре и стирает его в следующем. используйте массив или список, содержащий все изображения, которые вы хотите нарисовать, и перебирайте их в методе рисования.