Cómo implementar una vista de celda personalizada en Android

hola, aquí las instrucciones dadas pueden ayudarte

Una vista personalizada bien diseñada es muy parecida a cualquier otra clase bien diseñada. Encapsula un conjunto específico de funcionalidades con una interfaz fácil de usar, usa la CPU y la memoria de manera eficiente, y así sucesivamente. Sin embargo, además de ser una clase bien diseñada, una vista personalizada debería:

  • Conforme a los estándares de Android
  • Proporcione atributos con estilo personalizados que funcionen con diseños XML de Android
  • Enviar eventos de accesibilidad
  • Sea compatible con múltiples plataformas de Android.

El marco de Android proporciona un conjunto de clases base y etiquetas XML para ayudarlo a crear una vista que cumpla con todos estos requisitos. Esta lección discute cómo usar el marco de Android para crear la funcionalidad principal de una clase de vista.

Subclase una vista


Todas las clases de vista definidas en el marco de Android extienden la vista. Su vista personalizada también puede extender la Vista directamente, o puede ahorrar tiempo extendiendo una de las subclases de vista existentes, como Button.

Para permitir que Android Studio interactúe con su vista, como mínimo debe proporcionar un constructor que tome un contexto y un objeto AttributeSet como parámetros. Este constructor permite que el editor de diseño cree y edite una instancia de su vista.

clase PieChart extiende Ver {public PieChart (Context context, AttributeSet attrs) {super (context, attrs); }}

Definir atributos personalizados


Para agregar una Vista integrada a su interfaz de usuario, debe especificarla en un elemento XML y controlar su apariencia y comportamiento con los atributos del elemento. Las vistas personalizadas bien escritas también se pueden agregar y diseñar a través de XML. Para habilitar este comportamiento en su vista personalizada, debe:

  • Defina atributos personalizados para su vista en un elemento de recurso
  • Especifique valores para los atributos en su diseño XML
  • Recuperar valores de atributos en tiempo de ejecución
  • Aplique los valores de atributo recuperados a su vista

Esta sección discute cómo definir atributos personalizados y especificar sus valores. La siguiente sección trata de recuperar y aplicar los valores en tiempo de ejecución.

Para definir atributos personalizados, agregue recursos a su proyecto. Es habitual colocar estos recursos en un archivo res/values/attrs.xml . Aquí hay un ejemplo de un archivo attrs.xml :

Este código declara dos atributos personalizados, showText y labelPosition , que pertenecen a una entidad con estilo llamada PieChart . El nombre de la entidad con estilo es, por convención, el mismo nombre que el nombre de la clase que define la vista personalizada. Aunque no es estrictamente necesario seguir esta convención, muchos editores de códigos populares dependen de esta convención de nomenclatura para proporcionar la finalización de la declaración.

Una vez que defina los atributos personalizados, puede usarlos en archivos XML de diseño al igual que los atributos integrados. La única diferencia es que sus atributos personalizados pertenecen a un espacio de nombres diferente. En lugar de pertenecer al http://schemas.android.com/apk/res/android namespace, pertenecen a http://schemas.android.com/apk/res/[your package name] . Por ejemplo, aquí se explica cómo usar los atributos definidos para PieChart :

Para evitar tener que repetir el URI de espacio de nombres largo, la muestra usa una directiva xmlns . Esta directiva asigna el alias custom al espacio de nombres http://schemas.android.com/apk/res/com.example.customviews . Puede elegir cualquier alias que desee para su espacio de nombres.

Observe el nombre de la etiqueta XML que agrega la vista personalizada al diseño. Es el nombre completo de la clase de vista personalizada. Si su clase de vista es una clase interna, debe calificarla con el nombre de la clase externa de la vista. promover. Por ejemplo, la clase PieChart tiene una clase interna llamada PieView . Para usar los atributos personalizados de esta clase, debe usar la etiqueta com.example.customviews.charting.PieChart$PieView .

Aplicar atributos personalizados


Cuando se crea una vista desde un diseño XML, todos los atributos de la etiqueta XML se leen del paquete de recursos y se pasan al constructor de la vista como un conjunto de atributos. Aunque es posible leer valores del AttributeSet directamente, hacerlo tiene algunas desventajas:

  • Las referencias de recursos dentro de los valores de atributo no se resuelven
  • No se aplican estilos.

En su lugar, pase el AttributeSet a obtenerStyledAttributes (). Este método devuelve una matriz de valores TypedArray que ya se han desreferenciado y diseñado.

El compilador de recursos de Android hace un gran trabajo para facilitar la llamada a getStyledAttributes (). Para cada recurso en el directorio res, el R.java generado define tanto una matriz de identificadores de atributo como un conjunto de constantes que definen el índice para cada atributo en la matriz. Utiliza las constantes predefinidas para leer los atributos de TypedArray. Así es como la clase PieChart lee sus atributos:

PieChart público (Contexto contextual, AttributeSet attrs) {super (context, attrs); TypedArray a = context.getTheme (). GetStyledAttributes (attrs, R.styleable.PieChart, 0, 0); pruebe {mShowText = a.getBoolean (R.styleable.PieChart_showText, falso); mTextPos = a.getInteger (R.styleable.PieChart_labelPosition, 0); } finalmente {a.recycle (); }}

Tenga en cuenta que los objetos TypedArray son un recurso compartido y deben reciclarse después de su uso.

Agregar propiedades y eventos


Los atributos son una forma poderosa de controlar el comportamiento y la apariencia de las vistas, pero solo se pueden leer cuando se inicializa la vista. Para proporcionar un comportamiento dinámico, exponga un par getter y setter de propiedad para cada atributo personalizado. El siguiente fragmento muestra cómo PieChart expone una propiedad llamada showText :

public boolean isShowText () {return mShowText;} public void setShowText (boolean showText) {mShowText = showText; invalidar(); requestLayout ();}

Observe que setShowText llamadas setShowText invalidan () y requestLayout (). Estas llamadas son cruciales para garantizar que la vista se comporte de manera confiable. Debe invalidar la vista después de cualquier cambio en sus propiedades que pueda cambiar su apariencia, para que el sistema sepa que necesita ser redibujado. Del mismo modo, debe solicitar un nuevo diseño si cambia una propiedad que pueda afectar el tamaño o la forma de la vista. Olvidar estas llamadas a métodos puede causar errores difíciles de encontrar.

Las vistas personalizadas también deberían ser compatibles con los oyentes de eventos para comunicar eventos importantes. Por ejemplo, PieChart expone un evento personalizado llamado OnCurrentItemChanged para notificar a los oyentes que el usuario ha rotado el gráfico circular para enfocarse en un nuevo sector circular.

Es fácil olvidar exponer propiedades y eventos, especialmente cuando es el único usuario de la vista personalizada. Tomarse un tiempo para definir cuidadosamente la interfaz de su vista reduce los costos de mantenimiento futuros. Una buena regla a seguir es exponer siempre cualquier propiedad que afecte la apariencia visible o el comportamiento de su vista personalizada.

Diseño para accesibilidad


Su vista personalizada debe admitir la más amplia gama de usuarios. Esto incluye a los usuarios con discapacidades que les impiden ver o usar una pantalla táctil. Para apoyar a los usuarios con discapacidades, debe:

  • Etiquete sus campos de entrada usando el atributo android:contentDescription
  • Envía eventos de accesibilidad llamando a sendAccessibilityEvent () cuando sea apropiado.
  • Admite controladores alternativos, como D-pad y trackball

More Interesting

¿Cuál es el alcance del desarrollo de aplicaciones de Android e iOS?

¿Desde dónde puedo descargar el código fuente para la aplicación de edición de imágenes?

¿Cómo podemos desarrollar una interfaz de usuario plana para Android? Soy un estudiante que está aprendiendo el desarrollo de aplicaciones nativas de Android. Cualquier enlace o biblioteca sería más útil.

¿Cómo convierto un diseño PSD a un diseño XML Android?

¿Cuánto tiempo llevará desarrollar una aplicación de reproductor de video para Android?

Cómo hacer una aplicación de Android de supermercado simple por mi cuenta

¿Debo aprender el desarrollo de aplicaciones de Android o concentrarme en lo académico?

¿Cuál es la aplicación de Android más insegura pero popular que se usa ahora?

¿Cuál es el mejor programador de E / S para usar en un Android?

¿Cuál es la mejor rutina a seguir para convertirse en desarrollador de Android a los 17 años?

¿Cuáles son algunas características que se pueden agregar fácilmente a una aplicación de Android para aumentar su funcionalidad en un tiempo mínimo?

Si quiero desarrollar una aplicación de chatbot para Android totalmente funcional, ¿qué debo estudiar?

¿Cuáles son los pasos del desarrollo de la versión de Android?

¿Cuál es el alcance de Android en los automóviles?

Estoy pensando en hacer una aplicación para Android. No sé casi nada sobre programación, pero estoy dispuesto a aprender. ¿Qué puede ayudarme a comenzar a aprender a desarrollarme?