2010-04-13 16 views
41

Android viene con muchos recursos del sistema (android.R) que se pueden usar para ahorrar tiempo y hacer que su aplicación sea más liviana.Recursos útiles del sistema Android

Por ejemplo, recientemente he descubierto que Android ofrece cadenas localizadas para Sí (android.R.string.yes), No (android.R.string.no), Cancel (android.R.string.cancel) y OK (android.R.string.ok), entre otras cadenas.

¿Qué otros recursos del sistema recomienda utilizar? ¿O hay alguna razón para evitar el uso de los recursos del sistema?

Editar: Como se ha señalado por Tomas, algunos de estos recursos podría no producir los resultados que se pueden esperar (en particular, los rendimientos android.R.string.yes/noOK/Cancel en lugar de Yes/No, según ha informado here). Para un mayor control, puede copiar los recursos del sistema desde el código fuente de Android.

+2

¿Cómo se accede desde xml? –

+0

"¿O hay alguna razón para evitar el uso de recursos del sistema?": En caso de que esté utilizando recursos del sistema como iconos, no se garantiza que el mismo icono esté disponible en todas las versiones de Android, lo que puede ocasionar que la aplicación no sea uniforme. . – codeMan

+0

Votación para cerrar como demasiado amplia/basada en opinión. –

Respuesta

46

Puede encontrar un listado completo de todos los recursos del sistema en el android package.

Cada vez que quiero hacer algo en Android, compruebo si hay un recurso del sistema que cubra lo que quiero hacer. Es útil importar el código fuente de Android (en particular, their /res/ folder) al buscar recursos ya implementados que pueda desear, para que pueda ver su implementación específica.

En lo personal, me encuentro más a menudo usando:

  • incorporado diseños de Android para tareas estándar, tales como menús desplegables tornillo.
  • identificadores de Android (android.R.id), ya menudo se le solicita a utilizar estos si desea utilizar algunos de los widgets de Android (por ejemplo, TabHost/TabWidget requiere el uso de "android:id/tabhost", "android:id/tabs" y "android:id/tabcontent" si quieres implementar un diseño XML).
  • Colores incorporados, especialmente android.R.color.transparent.
  • Las animaciones integradas de aparición y desaparición de Android en android.R.anim.
+9

Tenga en cuenta que esos recursos se envían con su SDK. Busque en el directorio 'data/res /' debajo de un directorio de plataforma específico. Sería cuidadoso reutilizando las cosas que los OEM podrían cambiar - los recursos dibujables serían un ejemplo de área problemática. – CommonsWare

+0

@CommonsWare Cuando se ejecuta en un dispositivo real, ¿de dónde se cargan los recursos? – ThomasW

+0

@ThomasW: Más allá de "en algún lugar del firmware del dispositivo", no puedo decirlo, ya que nunca he buscado información específica. ¡Lo siento! – CommonsWare

6

Como se menciona en CommonsWare, no es necesario descargar el repositorio de fuentes de Android para inspeccionar los recursos; solo diríjase al <android-sdk-dir>/platforms/android-X.X/data/res/. Sin embargo, si comienza a usarlos, se desilusionará rápidamente al descubrir que la mayoría de ellos son y no disponibles a través de la clase android.R. La mayoría de las veces tengo que importarlos a mi espacio de trabajo de Eclipse de todos modos. :-(

Mis recursos favoritos son los dibujables que se muestran de forma diferente en función de los estados enfocados/presionado/deshabilitado del control (como android.R.drawable.btn_default). Los uso o los modifico para crear botones personalizados para mis aplicaciones Como puede ver si mira /data/res/drawable/btn_default.xml, se definen como un elemento XML <selector>, que se infla en StateListDrawable en tiempo de ejecución. También puede crear sus propios StateListDrawables y son muy útiles, tanto como fondos de vista como como del botón "estirable compuesto" (ver TextView.setCompoundDrawables()).

+0

Me pregunto, cuando se ejecuta en un dispositivo real, ¿de dónde se cargan los recursos? – ThomasW

1

Tenga en cuenta que las traducciones son realmente malas.

Por ejemplo, el "no" alemán en android-25 es "Abbrechen", que en realidad significa "cancelar". "Sí" se traduce como "OK" ...

No estoy seguro de lo buenos que son los otros idiomas, así que usaría una traducción propia.

+0

No es que las traducciones sean malas. Como señaló OP en su pregunta, es que 'android.R.string.yes/no' devuelve' OK/Cancel' en lugar de 'Yes/No'. Esto es probable porque el desarrollador pensó que 'android.R.string.yes/no' era más conciso que' android.R.string.ok/cancel'. – Patrick

+1

Además, 'android.R.string.ok' no parece traducirse. Está "OK" para todos los idiomas que he probado. (Para algunos idiomas, "OK" no es apropiado). – ThomasW

Cuestiones relacionadas