2012-04-27 2 views
1

У меня просто есть быстрый вопрос о том, как вы обычно подходите к этому. Я не уверен, что вы видели игру Paper Toss или что-то подобное, когда вы поместите свой палец поверх существующего изображения, перетащите его на бит (скажем, потянув изображение) и отпустите, что заставляет это изображение перемещаться по экрану.Использование Canvas (surfaceview) или использование представлений с переводом анимации

Чтобы сделать что-то подобное, что было бы лучшим способом справиться с такой графикой (в основном касалось движения графики и события касания): -Удаление изображения и OnTouchListener, которое получит x/y и сделает translateAnimation для каждый X/Y, а затем совершать переводАнимация изображения по экрану при поднятии касания

-OR иметь вид на поверхности и рисовать растровое изображение изображения на холсте и иметь метод OnDraw, получающий координаты X/Y touch event и рисовать растровые изображения соответственно

Я всегда смущен, с кем идти и почему? (Я стремлюсь к Android 2.3 так перетащить/падение что-то выходит за рамки этого)

PS: Я полагаю, что холст и SurfaceView всегда приходит вместе так, поправьте меня, если я ошибаюсь

+0

если вы удовлетворены ответом, то, пожалуйста, примите его. – Sameer

+1

Я принял ответ :) – Snake

ответ

1

PS: Я полагаю, что холст и SurfaceView всегда приходит вместе так, поправьте меня, если я ошибаюсь

Да вы правы, они оба пришли вместе.

Сначала в анимации (Либо Translate, Rotate, Scale) мы просто меняем положение, вид ImageView в течение определенного времени (пока это показывает эффект анимации). то он будет в исходном положении.

Но в холсте, мы меняем ImageView (мы рисуем растровое изображение здесь, а не изображение) постоянно на основе его координат. Предположим, вы хотите изменить изображение, где бы вы ни коснулись пальца, а затем просто нарисуйте его с новой координатой, которую вы получили от OnTouchEvent()

Наконец, я скажу, что ничто не лучше всего на основе нашего требования. Поверхность и холст используются в основном в игровом контексте.

+0

, хотя вы используете cna fillAfter в анимации, чтобы он оставался в конечном положении. Хороший ответ, но я искал подробней. – Snake

0

Все, что GFX интенсивное , т.е. все, что использует спрайты, должно выполняться на SurfaceView или GLSurfaceView для достижения наилучшей производительности. Для недвижных изображений/растровых изображений, которые анимированы или нет, стандартная реализация View/ViewGroup прекрасна.

Образец SDK LunarLander - хорошее место для начала.

+0

Это хорошее место для начала, если вы хотите познакомиться с Android. Если вы работаете над игрой, предпочитайте некоторые из игровых движков, чтобы не изобретать завещание. Если вам нравится развиваться в java, вы можете использовать LibGdx. Он имеет множество функций (например, box2d) и управляет жизненным циклом игры для вас, поэтому вы не должны писать его самостоятельно, как в примере LunarLander android. – Deepscorn

+0

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