2014-09-08 4 views
0

Я развиваю игру в нарды. Я рисую доску и куски, используя canvas.drawBitmap. Я хочу переместить фигуры из одного места в другое с помощью анимации. Как мне это сделать? Я думаю, что я должен сделать какую-то анимацию перевода. Могу ли я сделать это с растровыми изображениями? спасибо.андроидная растровая анимация перевода

ответ

0

Проверить этот код оживляющий ImageView:

final ImageView btnTranslate1 = (ImageView) findViewById(R.id.translate1); 
Animation translateAnimation1 = new TranslateAnimation(0f, x, 0f, y); 
translateAnimation1.setDuration(500); 
translateAnimation1.setInterpolator(new CircInterpolator(Type.INOUT)); 

// start your animation with this line 
btnTranslate1.startAnimation(translate1); 
+0

благодарит за ответ, но я не использую изображения. как я сказал в вопросе, я прямо рисую растровые изображения на холсте. –

0

Создание глобальных координат местоположения для частей и обновлять их с помощью Animation.

Point positionOfPiece; 

private static final int FINAL_X = 5; 
private static final int FINAL_Y = 5; 

private static final int INITIAL_X = 5; 
private static final int INITIAL_Y = 5; 

private class CustomAnimation extends Animation { 

     @Override 
     protected void applyTransformation(float interpolatedTime, 
       Transformation t) { 
      createLog("Updating"); 

      if (interpolatedTime == 0) { 
        positionOfPiece.set(INITIAL_X, INITIAL_Y); 
      } else if (interpolatedTime == 1) { 
        positionOfPiece.set(FINAL_X, FINAL_Y); 
      } else { 
        positionOfPiece.set((1-interpolatedTime)*INITIAL_X + interpolatedTime*FINAL_X, (1-interpolatedTime)*INITIAL_Y + interpolatedTime*FINAL_Y); 
      } 
      postInvalidate(); 
      super.applyTransformation(interpolatedTime, t); 
     } 

    } 

Здесь интерполированное время будет варьироваться от 0 до 1 (* точно не зависит от интерполятора).

в соответствии с вашей продолжительностью и интерполятором анимации.

mAnimation = new CustomAnimation(); 
mAnimation.setDuration(mDuration); 
mAnimation.setInterpolator(mInterpolator); 
startAnimation(mAnimation); 
+0

спасибо. Я попробую, но действительно растровые изображения не могут быть анимированы проще? –

+0

не существует способа анимировать любой элемент внутри представления, кроме запуска непрерывного процесса и обновления его свойства в нем. (Но вы можете анимировать представления, используя аниматор свойств). –

Смежные вопросы