Rendimiento: ViewGroup with Children VS. Vista personalizada
Estoy desarrollando una aplicación con muchas vistas personalizadas y he tenido problemas de rendimiento con una muy compleja de ellas. El tiempo que toman para medir y dibujar es alto (> = 30ms típico). Para dar algunos más detalles: Es un ViewGroup
personalizado (extendiendo RelativeLayout
) con vistas personalizadas (extendiendo RelativeLayout
aunque) como son los niños.
Así que me encontré con mi mente lo que podría ser el mejor / más rápido enfoque para deshacerse de este problemas de rendimiento: Optimizar los niños y los diseños o cambiar a una vista completamente dibujado a medida (líneas, rectángulos y cosas como estas)?
- Estilizar un texto de edición de Android para que parezca un selector de lista desplegable / spinner
- Cómo animar la traducción de una vista
- Android GridView de columna, anchura variable como la aplicación GooglePlus
- Animación de traducción para ocultar Vista
- Creación y uso de la vista de un fragmento aunque no sea visible para el usuario
¿Alguno de ustedes tiene experiencia en uno u otro? ¿O incluso algunos hicieron algunos puntos de referencia y está dispuesto a compartirlos?
- Vista personalizada como bloqueo / desbloqueo de la pantalla de Android
- Diferencia entre foo.setVisibility (View.GONE) y parent.removeView (foo)
- ¿Cómo setContentView en un fragmento?
- Vista de calendario para Android GingerBread y antes (API <11)
- OnGlobalLayout diferenciar entre varias invocaciones
- SYSTEM_UI_FLAG_LOW_PROFILE no se puede resolver o no es un campo para google threadsample
- Fragmentos: ¿cuál es el mejor lugar para medir vistas?
- Vista no adjunta al administrador de ventanas (cuál es la solución?)
El enfoque simple sería trabajar en simplificar y aplanar la jerarquía de vista actual y tal vez usted será capaz de hacer el proceso de medición y dibujo mucho más barato (o decente por lo menos). No has publicado un diseño por lo que no hay algo específico que decir, que he visto mencionó RelativeLayouts
en RelativeLayouts
, tal vez podría quitar uno y mover las vistas hasta un nivel (incluso con el gasto de añadir otras vistas de ayuda) , Cada nivel cuenta (especialmente con nesting RelativeLayouts
). Usted probablemente ya lo sabe, pero la merge
y la include
etiquetas en los diseños podría resultar muy útil.
RelativeLayout
estar en el SDK estándar se construyó como un widget general por lo que muy probablemente no puede lograr el rendimiento de un diseño personalizado. Tendría mucho más sentido hacer que tus diseños actuales extendieran RelativeLayout
para extender ViewGroup
e implementar la medición y el diseño de los niños manualmente, especialmente como probablemente sabes los escenarios de casos de uso en tus aplicaciones (por ejemplo, un RelativeLayout
siempre tiene que manejar toda la restricción de tamaño Casos que podría estar en su diseño personalizado por otro lado podría manejar esto mucho más rápido si sabes que la vista personalizada tendrá un cierto tamaño).
Relacionado con una vista dibujada totalmente personalizada , es una opción, pero depende de la complejidad de su diseño.
¿O incluso algunos hicieron algunos puntos de referencia y está dispuesto a compartirlos?
No veo cómo los varios puntos de referencia de la visión (que muy probablemente no se aplicarán a su situación específica) ayudarán.
- No se puede mantener fragmentos en vivo a través de cambiar la orientación o Guardar fragmento de interfaz de usuario
- Android, Eclipse, Google_Play_Services_Lib – intentando importar el proyecto y obtener errores