El arsenal de Android – Vistas

CheckboxQuestions es una biblioteca que proporciona varias formas de hacer preguntas. hasta ahora hay Preguntas de sí o no, Preguntas de respuestas múltiples, Y Múltiples preguntas. Estas preguntas usan casillas de verificación para crear una interfaz de usuario elegante que se ajuste perfectamente a su aplicación.

Resumen

demostración XML

(El segundo número de pregunta es dos en lugar de 2 para mostrar que puede poner lo que quiera como número)

Lista de preguntas de demostración

Grabación.de.pantalla.2021-04-22.a.las.8.28.30.AM.mov

(El video de arriba recibe preguntas de una API)

La última versión estable es v1.4.0

para Gradle

En su nivel de proyecto build.gradle primero agregue JitPack:

 allprojects {
  repositories {
   ...
   maven { url 'https://jitpack.io' }
  }
 }

En su capa de aplicación build.gradle agregue:

dependencies {
    implementation 'com.github.Cyber-cp:CheckboxQuestions:LATEST_RELEASE'
}

para experto

Primero agregue JitPack a su archivo de compilación:

 <repositories>
  <repository>
      <id>jitpack.io</id>
      <url>https://jitpack.io</url>
  </repository>
 </repositories>

Luego agregue la dependencia:

 <dependency>
     <groupId>com.github.Cyber-cp</groupId>
     <artifactId>CheckboxQuestions</artifactId>
     <version>LATEST_RELEASE</version>
 </dependency>

Esta es la forma más fácil de agregar preguntas. Funciona agregando preguntas a un diseño definido en el archivo xml de diseño. Aquí hay un ejemplo de un archivo de diseño:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:id="@+id/questionLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center|top"
            android:orientation="vertical">

            <Button
                android:id="@+id/getAnswers"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="logAnswers"
                android:text="Press me!" />
        </LinearLayout>

    </ScrollView>


</androidx.constraintlayout.widget.ConstraintLayout>

(El botón es para obtener las respuestas, la vista de desplazamiento es en caso de que haya demasiadas preguntas y se salgan de la pantalla)

Principalmente nos preocupamos solo por el diseño lineal en la vista de desplazamiento.

LinearLayout linearLayout = findViewById(R.id.questionLayout);

Generador de configuraciones

Ahora queremos crear nuestra lista de preguntas, pero primero debe darle algunas configuraciones para que la vista se muestre a su gusto.

QuestionListSettings questionListSettings = new QuestionListSettings.SettingsBuilder()
                                .setCheckboxLocation(Question.LEFT)
                                .setCheckBoxOrientation(Question.SPLIT_VERTICAL)
                                .setNumberEnabled(false)
                                .setOptionTextSize(20)
                                .setQuestionTextSize(24)
                                .setSpacing(15)
                                .create();

El setCheckboxLocation() le permite elegir si las opciones para la pregunta están a la izquierda, al centro oa la derecha de la pantalla. El setCheckBoxOrientation() le permite elegir si las opciones para la pregunta están apiladas o una al lado de la otra. El setNumberEnabled() le permite elegir si las preguntas tienen un número visible. El setSpacing() le permite elegir la distancia entre las opciones. El setQuestionTextSize() Y setOptionTextSize() le permite elegir el tamaño del texto para la pregunta y las opciones, respectivamente.

lista de preguntas

Ahora queremos crear nuestra lista de preguntas. Hay 2 formas de hacer esto. Si desea un cuestionario simple de sí o no, simplemente cree una matriz de cadenas llena de preguntas.

String[] string = new String[]{"Is 9+2 = 11?", "Are you happy?", "Did you eat breakfast?"};

Si desea hacer preguntas con una respuesta correcta, cree una ArrayList de Peticiones.

ArrayList<Question> list = new ArrayList<>();

list.add(new Question("How are you?", Question.NO_ANSWER, Question.MULTIPLE_CHOICE_QUESTION, "Good", "Bad"));
list.add(new Question("What is 17 * 5", 3, Question.MULTIPLE_CHOICE_QUESTION, "12", "22", "85", "105", "117"));

(Puedes añadir tantas preguntas como quieras)

Creación de la lista de preguntas

A continuación, queremos crear nuestra lista de preguntas usando la configuración que creó y la lista/matriz que creó.

QuestionList questionList = new QuestionList(list, questionListSettings, context);

Obtener las preguntas y verlas

Ahora, si desea crear las vistas, llame createQuestionViews().

questionList.createQuestionViews();

Para agregar vistas a su diseño, puede usar:

linearLayout.addView(questionList.getQuestionViews());

Todos los métodos

createQuestionViews()

Genera todas las vistas de preguntas. Se almacenan en un LinearLayout.

getQuestionViews()

Devuelve un LinearLayout lleno de visualizaciones de preguntas.

areAllQuestionsAnswered()

Devuelve un valor booleano que es verdadero si se respondieron todas las preguntas y falso si no se respondieron todas.

getPercentageOfCorrectAnswers()

Devuelve un valor decimal de cuántas respuestas son correctas.

getSelectedAnswers()

Devuelve una Object ArrayList llena de las respuestas seleccionadas. Puede desplazarse por la lista de arreglos usando for(Object answer : answers) y puede tratar de transmitir cada respuesta a un tema específico, por ejemplo (int) answer.

getQuestion(int index)

Devuelve una vista que puede ser MultipleChoiceQuestion o YesOrNoQuestion. Puede transmitir la vista a un tipo específico de pregunta y usar cualquier método que desee.

((MultipleChoiceQuestion) questionList.getQuestion(1)).setCheckedOption(0);

addOnAnswerChangedListener(int index, OnAnswerChangedListener onAnswerChangedListener)

Un oyente que le permite ejecutar código cada vez que cambia la respuesta, el índice es el índice de la pregunta en la lista de preguntas.

YesOrNoQuestions es un formulario de pregunta simple que muestra una pregunta con un número y solo permite sí o no como respuesta, mientras que MultipleChoiceQuestions permite cualquier cosa como una opción. Para usarlo en un diseño XML, simplemente use el siguiente código:

<com.aadyad.checkboxquestion.Views.YesOrNoQuestion
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:number_enabled="true"
        app:spacing_between_boxes="35"
        app:checkbox_location="center"
        app:checkbox_orientation="horizontal"
        app:question_number="1"
        app:question_title="Do you have a cold?"
 app:correct_answer="0"
        app:question_text_size="20"
        app:option_text_size="18" />

Número habilitado

El number_enabled el atributo le permite hacer que el número sea visible o no.

Espaciado entre cajas

El spacing_between_boxes El atributo le permite elegir el espacio entre las casillas de verificación.

Casilla de verificación de ubicación

El checkbox_location le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left", app:checkbox_location="center", oapp:checkbox_location="right".

Orientación de la casilla de verificación

El checkbox_orientation El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical" usar uso horizontal app:checkbox_orientation="horizontal"

Numero de aplicacion

El question_number atributo le permite establecer el número de pregunta.

Título de la pregunta

El question_title atributo le permite establecer el texto de la pregunta.

Respuesta correcta

El correct_answer atributo le permite establecer la respuesta correcta. Poner 0 para no responder.

Tamaño del texto de la pregunta

El question_text_size el atributo le permite establecer el tamaño del texto de la pregunta.

Opción de tamaño de texto

El option_text_size El atributo establece el tamaño del texto de la opción.

Métodos

addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)

Un oyente que le permite ejecutar código cada vez que cambia la respuesta.

setCheckedOption(String option)

Le permite elegir qué opción se selecciona usando el texto de la opción.

setCheckedOption(int option)

Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).

setCheckboxOrientation(int orientation)

Establezca la orientación de las casillas de verificación.

setQuestionTextSize(float questionTextSize)

Establezca el tamaño del texto de la pregunta.

setOptionTextSize(float optionTextSize)

Establezca el tamaño del texto para las opciones.

getSelectedAnswer()

Devuelve un int de la respuesta seleccionada.

setQuestion(String question)

Establecer el texto de la pregunta.

setQuestionNumber(String number)

Establezca el número de pregunta.

getQuestionTitleTextView()

Devuelve TextView que contiene el texto de la pregunta.

getQuestionNumberTextView()

Devuelve TextView que contiene el texto del número de pregunta.

getCorrectAnswer()

Devuelve un int que es el índice de la respuesta correcta (el índice comienza en 1, NO en 0). Si devuelve 1, la primera casilla de verificación es la respuesta correcta

isAnswerCorrect()

Devuelve un valor booleano que es verdadero si la respuesta seleccionada coincide con la respuesta correcta y falso en caso contrario.

setCorrectAnswer(int correctAnswer)

Establezca la respuesta correcta a la pregunta.

<com.aadyad.checkboxquestion.Views.MultipleChoiceQuestion
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:question_title="What is the slope-intercept equation of a line?"
 app:correct_answer="0"
        app:question_number="10"
        app:number_enabled="true"
        app:option_text_size="20"
        app:question_text_size="25"
        app:spacing_between_boxes="30"
        app:checkbox_orientation="full_vertical"
        app:option_1="x = ym + b"
        app:option_2="y = mx + b"
        app:option_3="y = mb * x"
        app:option_4="b = my / x"/>

Número habilitado

El number_enabled el atributo le permite hacer que el número sea visible o no.

Espaciado entre cajas

El spacing_between_boxes El atributo le permite elegir el espacio entre las casillas de verificación.

Casilla de verificación de ubicación

El checkbox_location le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left", app:checkbox_location="center", oapp:checkbox_location="right".

Orientación de la casilla de verificación

El checkbox_orientation El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical" usar uso horizontal app:checkbox_orientation="horizontal"

Numero de aplicacion

El question_number atributo le permite establecer el número de pregunta.

Título de la pregunta

El question_title atributo le permite establecer el texto de la pregunta.

Respuesta correcta

El correct_answer atributo le permite establecer la respuesta correcta. Poner 0 para no responder.

Tamaño del texto de la pregunta

El question_text_size el atributo le permite establecer el tamaño del texto de la pregunta.

Opción de tamaño de texto

El option_text_size El atributo establece el tamaño del texto de la opción.

Opciones

El option_1 establece el texto para la opción 1. El option_2 establece el texto para la opción 2. El option_3 establece el texto para la opción 3. El option_4 El atributo establece el texto para la opción 4.

Métodos

setCheckedOption(String option)

Le permite elegir qué opción se selecciona usando el texto de la opción.

setCheckedOption(int option)

Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).

addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)

Un oyente que le permite ejecutar código cada vez que cambia la respuesta.

setCheckboxOrientation(int orientation)

Establezca la orientación de las casillas de verificación.

setQuestionTextSize(float questionTextSize)

Establezca el tamaño del texto de la pregunta.

setOptionTextSize(float optionTextSize)

Establezca el tamaño del texto para las opciones.

getSelectedAnswer()

Devuelve un int de la respuesta seleccionada.

setQuestion(String question)

Establecer el texto de la pregunta.

getOptions()

Devuelve una matriz de cadenas con todas las opciones proporcionadas por la pregunta.

getCheckbox(int index)

Devuelve un objeto Checkbox en un índice dado (el índice comienza en 0).

getQuestionTitleTextView()

Devuelve TextView que contiene el texto de la pregunta.

getQuestionNumberTextView()

Devuelve TextView que contiene el texto del número de pregunta.

getCorrectAnswer()

Devuelve un int que es el índice de la respuesta correcta (el índice comienza en 1, NO en 0). Si devuelve 1, la primera casilla de verificación es la respuesta correcta

isAnswerCorrect()

Devuelve un valor booleano que es verdadero si la respuesta seleccionada coincide con la respuesta correcta y falso en caso contrario.

setCorrectAnswer(int correctAnswer)

Establezca la respuesta correcta a la pregunta.

setOptionText(int index, String text)

Establece el texto de una opción recuperada de un índice. La opción se recupera del índice en el orden en que se pueden ver.

<com.aadyad.checkboxquestion.Views.MultipleAnswerQuestion
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:question_title="Which equations are equivalent to 90 + 30"
        app:question_number="10"
        app:number_enabled="true"
        app:option_text_size="20"
        app:question_text_size="25"
        app:spacing_between_boxes="30"
        app:checkbox_orientation="full_vertical"
        app:option_1="91 + 29"
        app:option_2="50 + 70"
        app:option_3="100 + 20"
        app:option_4="99 + 890980"/>

Número habilitado

El number_enabled el atributo le permite hacer que el número sea visible o no.

Espaciado entre cajas

El spacing_between_boxes El atributo le permite elegir el espacio entre las casillas de verificación.

Casilla de verificación de ubicación

El checkbox_location le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left", app:checkbox_location="center", oapp:checkbox_location="right".

Orientación de la casilla de verificación

El checkbox_orientation El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical" usar uso horizontal app:checkbox_orientation="horizontal"

Numero de aplicacion

El question_number atributo le permite establecer el número de pregunta.

Título de la pregunta

El question_title atributo le permite establecer el texto de la pregunta.

Tamaño del texto de la pregunta

El question_text_size el atributo le permite establecer el tamaño del texto de la pregunta.

Opción de tamaño de texto

El option_text_size El atributo establece el tamaño del texto de la opción.

Opciones

El option_1 establece el texto para la opción 1. El option_2 establece el texto para la opción 2. El option_3 establece el texto para la opción 3. El option_4 El atributo establece el texto para la opción 4.

Métodos

setCheckedOption(String option)

Le permite elegir qué opción se selecciona usando el texto de la opción.

setCheckedOption(int option)

Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).

addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)

Un oyente que le permite ejecutar código cada vez que cambia la respuesta.

setCheckboxOrientation(int orientation)

Establezca la orientación de las casillas de verificación.

setQuestionTextSize(float questionTextSize)

Establezca el tamaño del texto de la pregunta.

setOptionTextSize(float optionTextSize)

Establezca el tamaño del texto para las opciones.

getSelectedAnswers()

Devuelve una ArrayList completa de la respuesta seleccionada.

setQuestion(String question)

Establecer el texto de la pregunta.

getOptions()

Devuelve una matriz de cadenas con todas las opciones proporcionadas por la pregunta.

getCheckbox(int index)

Devuelve un objeto Checkbox en un índice dado (el índice comienza en 0).

getQuestionTitleTextView()

Devuelve TextView que contiene el texto de la pregunta.

getQuestionNumberTextView()

Devuelve TextView que contiene el texto del número de pregunta.

getCorrectAnswer()

Devuelve un Integer ArrayList que contiene los índices de las respuestas correctas (el índice comienza en 1, NO en 0).

isAnswerCorrect()

Devuelve un valor booleano que es verdadero si las respuestas seleccionadas coinciden con la respuesta correcta y falso en caso contrario.

setCorrectAnswer(ArrayList<Integer> correctAnswer)

Establezca la respuesta correcta a la pregunta.

setOptionText(int index, String text)

Establece el texto de una opción recuperada de un índice. La opción se recupera del índice en el orden en que se pueden ver.

Preguntas es un objeto que le permite crear una lista de preguntas con preguntas de opción múltiple. Hay 3 constructores para el objeto Pregunta, lo que significa que hay 2 formas de definir su objeto Pregunta

Calle de un solo sentido:

Question q = new Question("What is the slope intercept equation of a line?", 2, Question.MULTIPLE_CHOICE_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");

El primer argumento que se pasa es la pregunta, el tercer argumento es el tipo de pregunta, el cuarto argumento es una matriz de cadenas con posibles respuestas y el segundo argumento es el índice (este índice COMIENZA en 1, NO en 0) de la respuesta correcta en la matriz

El cuarto argumento también se puede escribir como:

new String[]{"x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y"}

Otra forma de crear una pregunta es:

Question q = new Question("What is the slope intercept equation of a line?", "y = mx + b", Question.MULTIPLE_CHOICE_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");

El segundo argumento aquí es una versión de cadena de la respuesta correcta.

La última forma es:

Question q = new Question("What is the slope intercept equation of a line?", new ArrayList<Integer>(Arrays.asList(1, 2, 3)), Question.MULTIPLE_ANSWER_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");

En este ejemplo, el segundo argumento es una ArrayList de enteros de las respuestas correctas. Todo lo demás se mantiene igual.

Si no hay respuesta, el segundo argumento se puede establecer en Pregunta.NO_RESPUESTA (o 0) o nulo.

Un oyente que le permite detectar cuando se cambia la respuesta a una pregunta. Podría verse así:

multipleChoiceQuestion.addOnAnswerChangedListener(new OnAnswerChangedListener() {
            @Override
            public void onAnswerChanged(int selectedAnswerIndex, String selectedAnswerText) {
                
            }

            @Override
            public void onAnswerChanged(ArrayList<Integer> listOfSelectedAnswerIndexes) {

            }
        });

DESCARGO DE RESPONSABILIDAD: Los nombres de las variables pueden ser incorrectos cuando implementa este oyente en su aplicación. Todos los índices utilizados en esta interfaz comienzan en 1. OnAnswerChanged sin ArrayList se usa para YesOrNoQuestions y MultipleChoiceQuestions, mientras que el método con ArrayList es para MultipleAnswerQuestions.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *