Documentos de Académico
Documentos de Profesional
Documentos de Cultura
D3 2 PDF
D3 2 PDF
Rayco Araña
rayco.arana@gmail.com
Instituto SIANI
Gráficos 2D
Animación 2D
Gráficos 3D
Gráficos 2D
Animación 2D
Gráficos 3D
View
Sobrescribir método onDraw()
API Gráfica `Clásica´
▪ Canvas
▪ Tiene las operaciones de pintado
▪ Paint
▪ Es el «pincel» con el que pintamos
▪ Bitmap
▪ Es el lugar donde pintamos (encapsulado por el Canvas)
Proceso de pintar en el hilo del UI
SurfaceView
Actualizado por un segundo hilo
Ideal para operaciones pesadas de pintado
No bloquea la aplicación
▪ ¡Adios al dialogo «La actividad no responde»!
▪ Ideal para previsualizar la cámara, 3D, etc.
Mayor uso de memoria
▪ No todo son ventajas
Drawable
▪ android.graphics.drawable.*
Cualquier cosa que se pueda pintar en
pantalla
No tiene eventos como las vistas
Drawable
Simples:
▪ Bitmap.
▪ Nine Patch. PNG especial con marcas para su
redimensión.
▪ Shape. Vectorial, al modificar tamaño mantiene calidad.
Compuestos:
▪ Layers. Muestra unos sobre otros.
▪ States. Muestra uno basado en su estado (pulsado, …).
▪ Levels. Muestra uno basado en su nivel (ej. batería).
Drawable
Ej. Shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false">
<gradient android:type="sweep"
android:useLevel="false"
android:startColor="#4c737373"
android:centerColor="#4c737373"
android:centerY="0.50"
android:endColor="#ffffd300" />
</shape>
Gráficos 2D
Animación 2D
Gráficos 3D
Modificar el contenido de una vista en el
tiempo
Si sobrepasa los limites de la vista, se recorta
Dos tipos
Frame by Frame
Interpolado
Frame by Frame
Se basa en mostrar diferentes elementos
Drawable
Cada frame define su duración
Frame by Frame
Definición XML
<animation-list android:id="selected" android:oneshot="false">
<item android:drawable="@drawable/wheel0" android:duration="50" />
<item android:drawable="@drawable/wheel1" android:duration="50" />
<item android:drawable="@drawable/wheel2" android:duration="50" />
<item android:drawable="@drawable/wheel3" android:duration="50" />
<item android:drawable="@drawable/wheel4" android:duration="50" />
<item android:drawable="@drawable/wheel5" android:duration="50" />
</animation-list>
Frame by Frame
Asignación y comienzo por código
ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
img.setBackgroundResource(R.drawable.spin_animation);
Speed Forge 3D
• Desarrollado por un
desarrollador
independiente
• Control con acelerómetro
• Pionero en gráficos 3D
• Usado para demostrar
capacidad gráfica
Gráficos 3D == OpenGL ES
Soportada versión 1.0
▪ Corresponde a 1.3 de la versión de escritorio
Soporte básico de 1.1, no completo
GLSurfaceView
Vista sobre la que pinta OpenGL
Deriva de SurfaceView
Dos modo de pintado
▪ Continuo
▪ Bajo demanda
Necesita ser notificado del ciclo de vida de la
actividad (onPause y onResume)
▪ Necesario para parar o resumir el hilo gestionado
GLSurfaceView
Comunicación entre threads
▪ Uso de queueEvent
▪ Necesitaremos comunicar UI Thread con Renderer
Thread
▪ Toda entrada del usuario la recibiremos en el UI Thread
setRenderer()
▪ Solo se debe llamar una vez por GLSurfaceView
▪ Dispara el hilo de renderización
GLSurfaceView.Renderer
A partir de 1.5
Permite de forma sencilla realizar
operaciones de pintado y gestión de la
superficie
Tres métodos
▪ onSurfaceChanged
▪ onSurfaceCreated
▪ onDrawFrame
GLSurfaceView.Renderer
onSurfaceCreated
▪ Configuración
onSurfaceChanged
▪ Viewport
▪ Matriz de proyección
▪ Frustum
onDrawFrame
▪ Limpiar
▪ Pintar
Creación de aplicaciones móviles en Android
OpenGL
Khronos Group’s OpenGL ES Overview
▪ http://www.khronos.org/opengles/