para - manual programacion android español pdf
Aplicando la física a los objetos de Android View (4)
Actualmente tengo una aplicación de Android que utiliza las vistas nativas de Android para la interfaz de usuario (por ejemplo, vistas de imagen / botones, etc.)
Aunque esta aplicación no es un juego, ni requiere gráficos pesados ni OpenGL, me gustaría incorporar un poco de interacción relacionada con la física. Nada demasiado significativo, pero tal vez muestre colisiones / rebotes menores, desaceleración / aceleración o posiblemente fricción.
¿Es esto posible simular ya sea dentro del marco de Android o utilizando una biblioteca de física externa como jbox2d sin tener que utilizar un motor de juego completo (como andengine, libgx, etc.)?
PS esto es para API 15+
Gracias a todos.
Creo que esto se puede lograr, al menos en algún momento.
Tienes acceso a una API de animaciones bastante completa. Este último, junto con algunos límites de vista, distancia y, probablemente, los cálculos de orientación del dispositivo, se pueden usar para simular casi todos los casos que mencionó.
Puede crear Accelerate / Decelerate, form change ... y casi cualquier animación que desee.
Cómo puedes lograr lo que estás pidiendo:
Tener diferentes animaciones, una tras otra, creando y aplicándolas dinámicamente según el estado del elemento de vista. Y por estado, me refiero al "estado físico": caer, colisionar, estar en contacto con otra vista, y así sucesivamente ...
La forma más fácil (no tan flexible) es usar ViewPropertyAnimator .
Con él puedes animar propiedades incluso en paralelo. Tal vez usted quiera cambiar un margen de vista desde el padre a la izquierda. Puede cambiar ese margen allí, configurando el tiempo para moverse y otra cosa. Algunos ejemplos en este blog.
ValueAnimator es otra alternativa, que utiliza el AccelerateDecelerateInterpolator de forma predeterminada y debe proporcionar el código que cambia la propiedad que necesita. Esta guía oficial puede ser suficiente para que funcionen .
Lo que quieres es bastante imposible, tus opciones son:
- Puedes falsificar cosas como rebotes con animaciones.
- puedes implementar un nuevo ui lib
- usas OpenGL lo que yo haría
Siempre que pueda establecer / actualizar la posición de los elementos de la IU en cada fotograma (por ejemplo, con View.setTranslationX ()), puede hacerlo.
Animar la interfaz de usuario a mano significaría mantener un mapeo entre los elementos de la interfaz de usuario y los cuerpos físicos (por ejemplo, jbox2d) que corresponden a ellos. A continuación, actualice las posiciones respectivas de los elementos de la interfaz de usuario para que los cuerpos simulados tengan cada marco (como body.getPosition ()).
En las aplicaciones controladas por eventos, algo así como un objeto Timer es útil para programar las actualizaciones físicas.