Сегодня решил разобраться как сделать вращение изображения вокруг своей оси в своей игре, и начал спрашивать google. Google мне в ответ показывал много разного добра, но ничего толком умного он показывать не хотел, тогда я залез на забугорные американские сайты порылся там, на StackOwerflow, почитал там и набрел на маленькую заметку на одном из сайтов как такое сделать, решил что кому-то можно пригодится по этому делюсь с Вами как это делается.
Создаем проект в Eclipse — File — New — Android Project — Name Of Project.
И нам нужно сразу изменить наш onCreate(), так как мы будет рисовать на сцене, а значит будем использовать класс View для отображения объектов. Как обычно по старинке открываем наш Main.java и пишем:
GraphicsView — наш класс который будет рисовать всю нашу красоту.
Дальше нам нужно создать этот класс — GraphicsView.java, открываем его пишем вот такую красатень:
GraphicsView.java
Здесь мы наследуем класс рисования View, создаем наш рисунок, загружаем его в конструкторе и делаем по центру для красивого отображения на сцене. Ну и конечно рисуем на сцене в методе onDraw().
Так же android включает в себя несколько типов анимации:
RotateAnimation — для вращения вокруг точки.
AlphaAnimation — для исчезновения и появления.
ScaleAnimation — для того, чтобы сделать изображения большими и маленькими.
TranslateAnimation — для перемещения вещей вокруг своей оси.
AnimationSet — для объединения нескольких анимаций в одну
Метод createAnim() реализует вращение картинки вокруг центра вечно, картинка крутится вперед и назад. Продолжительность 10000L представляет собой общее время, необходимое для одного вращения — вперед и назад.
Вот что должно получиться:
Создаем проект в Eclipse — File — New — Android Project — Name Of Project.
И нам нужно сразу изменить наш onCreate(), так как мы будет рисовать на сцене, а значит будем использовать класс View для отображения объектов. Как обычно по старинке открываем наш Main.java и пишем:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicsView(this));
}
GraphicsView — наш класс который будет рисовать всю нашу красоту.
Дальше нам нужно создать этот класс — GraphicsView.java, открываем его пишем вот такую красатень:
GraphicsView.java
public class GraphicsView extends View {
private Animation anim;
private Bitmap bmp;
private int centerXOffset;
private int centerYOffset;
public GraphicsView(Context context) {
super(context);
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
centerXOffset = bmp.getWidth() / 2;
centerYOffset = bmp.getHeight() / 2;
}
private void createAnim(Canvas canvas) {
anim = new RotateAnimation(0, 360, canvas.getWidth() / 2, canvas.getHeight() / 2);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(10000L);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
startAnimation(anim);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// creates the animation the first time
if (anim == null) {
createAnim(canvas);
}
int centerX = canvas.getWidth() / 2;
int centerY = canvas.getHeight() / 2;
canvas.drawBitmap(bmp, centerX - centerXOffset, centerY - centerYOffset, null);
}
}
Здесь мы наследуем класс рисования View, создаем наш рисунок, загружаем его в конструкторе и делаем по центру для красивого отображения на сцене. Ну и конечно рисуем на сцене в методе onDraw().
Так же android включает в себя несколько типов анимации:
RotateAnimation — для вращения вокруг точки.
AlphaAnimation — для исчезновения и появления.
ScaleAnimation — для того, чтобы сделать изображения большими и маленькими.
TranslateAnimation — для перемещения вещей вокруг своей оси.
AnimationSet — для объединения нескольких анимаций в одну
Метод createAnim() реализует вращение картинки вокруг центра вечно, картинка крутится вперед и назад. Продолжительность 10000L представляет собой общее время, необходимое для одного вращения — вперед и назад.
Вот что должно получиться:
Вот это мне и нужно было, спасибо !
ОтветитьУдалитьПока не попробовал, задам вопрос, а если несколько объектов ? Они будут все крутиться ?
Не знаю, несколько картинок я не пробовал, думаю если их закинуть в список и вывести как список в массиве то будет все крутиться :)
УдалитьДа тут крутиться весь канвас.
Удалить