Применение физики в Android Просмотр объектов

В настоящее время у меня есть приложение для Android, которое использует собственные представления Android для пользовательского интерфейса (например, изображения / кнопки и т. Д.)

Хотя это приложение не является игрой и не требует тяжелой графики или OpenGL, я хотел бы добавить немного взаимодействия, связанного с физикой. Ничего особенного, но может быть незначительные столкновения / скачки, замедление / ускорение или, возможно, трение.

Это возможно для симуляции в рамках Android или с использованием внешней библиотеки физики, такой как jbox2d, без использования всего игрового движка (например, andengine, libgx и т. Д.).

PS это для API 15+

Спасибо всем.

4 ответа

Самый простой способ (не такой гибкий) - это использование ViewPropertyAnimator.

С его помощью вы можете анимировать свойства даже параллельно. Может быть, вы хотите изменить поле просмотра от родительского слева. Вы можете изменить это поле, установив время для перемещения и другое. Некоторые примеры в этом блоге

ValueAnimator - это другая альтернатива, которая по умолчанию использует AccelerateDecelerateInterpolator, и вы должны предоставить код, который изменяет необходимое свойство. Это официальное руководство может быть достаточно, чтобы заставить их работать.

Пока вы можете устанавливать / обновлять положение элементов пользовательского интерфейса в каждом кадре (например, с помощью View.setTranslationX()), вы можете это делать.

Анимация пользовательского интерфейса вручную означала бы сохранение соответствия между элементами пользовательского интерфейса и соответствующими им физическими (например, jbox2d) телами. Затем вы обновляете соответствующие позиции элементов пользовательского интерфейса в соответствии с тем, что моделируемые тела имеют каждый кадр (например, body.getPosition()).

В приложениях, управляемых событиями, что-то вроде объекта Timer полезно для планирования обновлений физики.

То, что вы хотите, совершенно невозможно - ваши варианты:

  1. Вы можете подделать вещи, как отскакивает с анимацией
  2. Вы можете реализовать совершенно новый пользовательский интерфейс
  3. вы используете OpenGL, что я хотел бы сделать

Я думаю, что это может быть достигнуто, по крайней мере, в какой-то момент.

У вас есть доступ к довольно полному API анимации. Последнее, вместе с некоторыми расчетами границ вида, расстояния и, возможно, ориентации устройства, может использоваться для моделирования почти всех случаев, которые вы упомянули.

Вы можете создать Ускорение / Замедление, изменение формы... и почти любую анимацию, какую хотите.

Как вы можете достичь того, что вы просите:
Имея различные анимации, одну за другой, создавая и применяя их динамически в зависимости от состояния элемента представления. И под состоянием я подразумеваю "физическое состояние": падение, столкновение, контакт с другим взглядом и т. Д.

Другие вопросы по тегам