Semana 5

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 24

EVALUACIÓN

Herramientas de
Programación Móvil
Semana 5

Nombre del estudiante: José


Cavero
Fecha de entrega: 04-02-2024
Carrera: Ingeniería Informática
EVALUACIÓN

- El nombre del proyecto debe ser tu nombre_apellido_seccioncurso


- La aplicación debe ser desarrollada en lenguaje Kotlin (aplicativo en lenguaje Java no será
considerado).
- La pantalla inicial de la aplicación debe contar con una animación alusiva a empresa de
retail.
- La pantalla inicial de la aplicación además de contener la animación debe contar con un
menú o botones para acceder a las distintas funcionalidades.

MainActivity
package com.example.jose_cavero_semana_5

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import android.animation.ObjectAnimator
import android.view.animation.LinearInterpolator
import android.widget.ImageView

2
EVALUACIÓN

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val btn1: Button = findViewById(R.id.button1)


btn1.setOnClickListener {
val intent: Intent = Intent(this,
MainActivity2::class.java)
startActivity(intent)
}

val btn2: Button = findViewById(R.id.button2)


btn2.setOnClickListener {
val intent: Intent = Intent(this,
MainActivity3::class.java)
startActivity(intent)
}
val btn5: Button = findViewById(R.id.button3)
btn5.setOnClickListener {
val intent: Intent = Intent(this,
MainActivity4::class.java)
startActivity(intent)
}

// ANIMACION DE IMAGEN
val imageView: ImageView = findViewById(R.id.imageView2)

// Crea un ObjectAnimator para la propiedad "translationX"


(posición horizontal)
val objectAnimator = ObjectAnimator.ofFloat(imageView,
"translationX", 0f, 350f) // 500f es el ancho de movimiento, ajusta
según sea necesario

// Establece la duración de la animación en milisegundos


objectAnimator.duration = 2000 // Ajusta la duración según
sea necesario

// Establece el interpolador para que la animación sea


lineal
objectAnimator.interpolator = LinearInterpolator()

// Repite la animación indefinidamente


objectAnimator.repeatCount = ObjectAnimator.INFINITE
objectAnimator.repeatMode = ObjectAnimator.REVERSE

// Inicia la animación
objectAnimator.start()

3
EVALUACIÓN

activity_main.xml

<?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">

<TextView
android:id="@+id/bien"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:layout_marginBottom="10dp"
android:text="!Bienvenidos!"
android:textAlignment="center"
android:textSize="34sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/imageView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="55dp"
android:layout_marginTop="89dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="30dp"
app:layout_constraintBottom_toTopOf="@+id/button1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bien"
4
EVALUACIÓN

app:srcCompat="@drawable/falabella" />

<Button
android:id="@+id/button2"
android:layout_width="168dp"
android:layout_height="60dp"
android:layout_marginStart="122dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="122dp"
android:layout_marginBottom="18dp"
android:backgroundTint="#CDDC39"
android:text="Vendedor Destacado"
app:layout_constraintBottom_toTopOf="@+id/button3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button1" />

<Button
android:id="@+id/button1"
android:layout_width="168dp"
android:layout_height="52dp"
android:layout_marginStart="122dp"
android:layout_marginTop="107dp"
android:layout_marginEnd="122dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#CDDC39"
android:text="Vendedores"
app:layout_constraintBottom_toTopOf="@+id/button2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView2" />

<Button
android:id="@+id/button3"
android:layout_width="168dp"
android:layout_height="52dp"
android:layout_marginStart="121dp"
android:layout_marginTop="7dp"
android:layout_marginEnd="122dp"
android:layout_marginBottom="107dp"
android:backgroundTint="#CDDC39"
android:text="Ventas"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />

</androidx.constraintlayout.widget.ConstraintLayout>

5
EVALUACIÓN

- Debe contar con una opción para capturar una foto y guardarla (utilizando la cámara) del
vendedor destacado.

La foto esta así porque tengo una Tablet.

Se tuvo que configurar el archivo

AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera"
android:required="false" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
6
EVALUACIÓN

android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Jose_Cavero_Semana_5"
tools:targetApi="31">

<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

<activity
android:name=".item_list2"
android:exported="false" />
<activity
android:name=".MainActivity4"
android:exported="false" />
<activity
android:name=".MainActivity3"
android:exported="false" />
<activity
android:name=".MainActivity2"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>

<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

7
EVALUACIÓN

MainActivity3.kt
package com.example.jose_cavero_semana_5

import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.BitmapFactory
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.view.View
import android.widget.Button
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.FileProvider
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.Date

class MainActivity3 : AppCompatActivity() {

private lateinit var photoButton: Button


private lateinit var photoImageView: ImageView
private lateinit var photoPath: String

companion object {
private const val CAMERA_PERMISSION_CODE = 101
private const val CAMERA_REQUEST_CODE = 102
}

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main3)

photoButton = findViewById(R.id.button6)
photoImageView = findViewById(R.id.photoImageView)

val btn: Button = findViewById(R.id.button5)


btn.setOnClickListener {
val intent: Intent = Intent(this,
MainActivity::class.java)
startActivity(intent)
}
8
EVALUACIÓN

photoButton.setOnClickListener {
if (checkCameraPermission()) {
dispatchTakePictureIntent()
} else {
requestCameraPermission()
}
}
}

private fun checkCameraPermission(): Boolean {


return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
checkSelfPermission(android.Manifest.permission.CAMERA) ==
PackageManager.PERMISSION_GRANTED
}

private fun requestCameraPermission() {


ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.CAMERA), CAMERA_PERMISSION_CODE)
}

private fun dispatchTakePictureIntent() {


val takePictureIntent =
Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if (takePictureIntent.resolveActivity(packageManager) !=
null) {
try {
val photoFile: File = createImageFile()
val photoURI: Uri = FileProvider.getUriForFile(
this,
"com.example.android.fileprovider",
photoFile
)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
photoURI)
startActivityForResult(takePictureIntent,
CAMERA_REQUEST_CODE)
} catch (ex: IOException) {
// Handle the exception when creating the file
ex.printStackTrace()
}
}
}

private fun createImageFile(): File {


val timeStamp: String =
SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
val storageDir: File? =
getExternalFilesDir(Environment.DIRECTORY_PICTURES)

9
EVALUACIÓN

val imageFileName = "JPEG_${timeStamp}_"


return File.createTempFile(imageFileName, ".jpg",
storageDir).apply {
photoPath = absolutePath
}
}

override fun onActivityResult(requestCode: Int, resultCode:


Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == CAMERA_REQUEST_CODE && resultCode ==
RESULT_OK) {
// Show the photo in your ImageView or perform any
other operation
displayPhoto(photoPath)
}
}

private fun displayPhoto(photoPath: String) {


val bitmap = BitmapFactory.decodeFile(photoPath)
photoImageView.setImageBitmap(bitmap)
photoImageView.visibility = View.VISIBLE
}
}

activity_main3.xml
<?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=".MainActivity3">

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginTop="7dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="623dp"
android:text="Vendedor Destacado"
android:textAllCaps="true"
android:textSize="34sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
10
EVALUACIÓN

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button5" />

<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="313dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="7dp"
android:backgroundTint="#CDDC39"
android:text="Inicio"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="191dp"
android:layout_marginBottom="15dp"
android:text="Tomar Foto"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toStartOf="@+id/button5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ImageView
android:id="@+id/photoImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/button6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:scaleType="fitCenter"
android:visibility="gone"/> <!-- Establece la visibilidad
inicial en "gone" -->

</androidx.constraintlayout.widget.ConstraintLayout>

11
EVALUACIÓN

- Debe contar con una opción la cual exponga un gráfico con los vendedores y su cantidad de
ventas.

activity_main4.xml
<?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=".MainActivity4">

<TextView

12
EVALUACIÓN

android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="152dp"
android:layout_marginTop="46dp"
android:layout_marginBottom="19dp"
android:text="Ventas"
android:textAlignment="center"
android:textSize="34sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="58dp"
android:backgroundTint="#CDDC39"
android:text="inicio"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/textView3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0" />

<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="392dp"
android:layout_height="567dp"
android:layout_marginTop="19dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
tools:context=".MainActivity">

<EditText
android:id="@+id/Concepto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"

13
EVALUACIÓN

android:hint="Concepto"
android:inputType="text" />

<EditText
android:id="@+id/etCantidad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:hint="Cantidad"
android:inputType="number" />

<Button
android:id="@+id/btnagregar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="AGREGAR" />

<com.echo.holographlibrary.BarGraph
android:id="@+id/graphBar"
android:layout_width="match_parent"
android:layout_height="245dp"
android:layout_margin="16dp" />

</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity4.kt

package com.example.jose_cavero_semana_5

import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import com.echo.holographlibrary.Bar
import com.echo.holographlibrary.BarGraph
import
com.example.jose_cavero_semana_5.databinding.ActivityMain4Binding
import kotlin.math.roundToInt

class MainActivity4 : AppCompatActivity() {

private lateinit var binding: ActivityMain4Binding

override fun onCreate(savedInstanceState: Bundle?) {

14
EVALUACIÓN

super.onCreate(savedInstanceState)
binding = ActivityMain4Binding.inflate(layoutInflater)
setContentView(binding.root)

val btn: Button = findViewById(R.id.button)


btn.setOnClickListener {
val intent: Intent = Intent(this, MainActivity::
class.java)
startActivity(intent)
}

val puntos = ArrayList<Bar>()

binding.btnagregar.setOnClickListener {
graficarBarras(puntos)
}
}

private fun graficarBarras(puntos: ArrayList<Bar>) {


val barra = Bar()
var color = generarColorHexAleatorio()
barra.color = Color.parseColor(color)
barra.name = binding.Concepto.text.toString()

val cantidadText = binding.etCantidad.text.toString()


try {
barra.value = cantidadText.toFloat()
} catch (e: NumberFormatException) {
// Manejar la excepción, por ejemplo, mostrar un
mensaje de error
}

puntos.add(barra)

binding.graphBar.bars = puntos
}

private fun generarColorHexAleatorio(): String {


val letras = arrayOf("0", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "A", "B", "C", "D", "E", "F")
var color = "#"
for (i in 0..5) {
color += letras[(Math.random() * 15).roundToInt()]
}

return color

15
EVALUACIÓN

}
}

Funcionalidades pantalla vendedores

- Debe contener un listado de vendedores, donde se incluya su foto, nombre y área a la cual
pertenece (mínimo 5 vendedores).
- Al seleccionar al tercer vendedor del listado debe reproducir un audio.

16
EVALUACIÓN

Para este punto tuve que hacer un listview.

activity_maim2.xml
<?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=".MainActivity2">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="55dp"
android:text="Lista de Vendedores"
android:textAlignment="center"
android:textSize="34sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/button4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/relativeLayout"
/>

<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="389dp"
android:layout_height="474dp"
tools:context=".MainActivity2"
tools:layout_editor_absoluteX="6dp"
tools:layout_editor_absoluteY="69dp">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

17
EVALUACIÓN

android:padding="16dp" />

</RelativeLayout>

<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="291dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="32dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#CDDC39"
android:text="Inicio"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity2.kt
package com.example.jose_cavero_semana_5

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class MainActivity2 : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)

val btn: Button = findViewById(R.id.button4)


btn.setOnClickListener {
val intent: Intent = Intent(this, MainActivity::
class.java)
startActivity(intent)
}

18
EVALUACIÓN

// Crear una lista de elementos de ejemplo (puedes


reemplazar esto con tus propios datos)
val dataList = listOf(
ListItem(R.drawable.image1, "Roberto", "Horeca"),
ListItem(R.drawable.image2, "Augusto", "Retail"),
ListItem(R.drawable.image5, "Monica", "Mayorista"),
ListItem(R.drawable.image4, "Gabriela", "Horeca"),
ListItem(R.drawable.image3, "Raul", "Retail"),
// ... Agrega más elementos según sea necesario
)

// Configurar el RecyclerView
val recyclerView: RecyclerView =
findViewById(R.id.recyclerView2)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = MyAdapter2(dataList)
}

a esto tuve que agregar un layout

itemlist2.kt

package com.example.jose_cavero_semana_5

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

data class ListItem(val imageResId: Int, val name: String, val


area: String)

class item_list2 : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_item_list2)
}
}

activity_item_list2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
19
EVALUACIÓN

xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">

<ImageView
android:id="@+id/imageView2"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="centerCrop"
android:src="@drawable/default_image" />

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:orientation="vertical">

<TextView
android:id="@+id/textName2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nombre"
android:textSize="18sp" />

<TextView
android:id="@+id/textArea2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Área"
android:textSize="14sp" />

</LinearLayout>
</LinearLayout>

Y un adaptador

MyAdapter2.kt

package com.example.jose_cavero_semana_5

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

20
EVALUACIÓN

import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class MyAdapter2(private val dataList: List<ListItem>) :


RecyclerView.Adapter<MyAdapter2.ViewHolder>() {

class ViewHolder(itemView: View) :


RecyclerView.ViewHolder(itemView) {
val imageView: ImageView =
itemView.findViewById(R.id.imageView2)
val textName: TextView =
itemView.findViewById(R.id.textName2)
val textArea: TextView =
itemView.findViewById(R.id.textArea2)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType:


Int): ViewHolder {
val view =
LayoutInflater.from(parent.context).inflate(R.layout.activity_item_
list2, parent, false)
return ViewHolder(view)
}

override fun onBindViewHolder(holder: ViewHolder, position:


Int) {
val item = dataList[position]

holder.imageView.setImageResource(item.imageResId)
holder.textName.text = item.name
holder.textArea.text = item.area
}

override fun getItemCount(): Int {


return dataList.size
}
}

21
EVALUACIÓN

De acuerdo con lo planteado, a continuación, responde lo siguiente:

1. Utiliza los elementos multimedia solicitados según requerimientos y describe su


utilización.

Se utilizan elementos multimedia, como imágenes, para representar visualmente cada elemento
de la lista de vendedores en la aplicación. Estas imágenes son mostradas en el ImageView definido
en el archivo item_list2.xml. En este caso, se ha establecido un ImageView con la referencia
R.id.imageView2 en la vista de cada elemento de la lista (item_list2.xml). La clase MyAdapter2.kt se
encarga de cargar estas imágenes utilizando la clase ViewHolder.

2. ¿En cuáles requerimientos se debe utilizar Media Store? Justifica su utilización dentro de
la aplicación desarrollada.

Media Store es una base de datos centralizada de metadatos de medios que se utiliza comúnmente
para acceder y organizar archivos multimedia en dispositivos Android.
Se debe utilizar Media Store en la aplicación desarrollada cuando se requiera acceder a la galería
de imágenes o archivos multimedia almacenados en el dispositivo.
Si la aplicación permite a los usuarios seleccionar imágenes de su galería o almacenamiento
interno, Media Store proporciona una interfaz segura y eficiente para acceder a estos recursos
multimedia.

3. ¿Qué elementos fueron necesarios para desplegar el gráfico requerido? Enumera los pasos
necesarios para su utilización en la aplicación desarrollada.

Para desplegar el gráfico requerido en la aplicación desarrollada, se utilizaron los siguientes


elementos:

RecyclerView
Permite mostrar una lista de elementos en una disposición vertical.
MyAdapter2
Una clase personalizada que extiende RecyclerView.Adapter, responsable de manejar la lógica de
visualización de la lista y vincular los datos a las vistas.
item_list2.xml
Define la apariencia de cada elemento en la lista, incluidos los elementos multimedia como
ImageView para la imagen.
ListItem
Una clase de datos que representa un elemento en la lista, con propiedades como imageResId para
la imagen, name para el nombre, y area para la categoría.

22
EVALUACIÓN

Pasos necesarios para su utilización:

1. Crear un diseño (item_list2.xml) que defina la apariencia de cada elemento de la lista.


2. Crear una clase de datos (ListItem) para representar la información de cada elemento en la
lista.
3. Implementar un adaptador personalizado (MyAdapter2) que extienda
RecyclerView.Adapter y maneje la lógica de visualización.
4. Configurar un RecyclerView en la actividad principal (MainActivity2) para mostrar la lista.
5. Proporcionar datos (por ejemplo, una lista de ListItem) al adaptador para que pueda
mostrar la información adecuada en la lista.
6. Asociar el adaptador con el RecyclerView y asegurarse de que las referencias de las vistas
en el diseño coincidan con las utilizadas en el adaptador.
7. Estos pasos aseguran que la lista de vendedores se muestre correctamente con las
imágenes y la información asociada en la aplicación.

23
EVALUACIÓN

REFERENCIAS BIBLIOGRÁFICAS

dev.xcheko51x. Creación de gráfica de barras con Librería HoloGraph en Kotlin y Android Studio
Recuperado de: https://www.youtube.com/watch?v=ToUqJz1cDVI&t=4s

Developer David González. Cómo utilizar ListView en Android Studio con Kotlin - Parte 1
Recuperado de: https://www.youtube.com/watch?v=rGfT_4PJ-Ok

Programador Novato. ListView en Android Studio [22]


Recuperado de: https://www.youtube.com/watch?v=CCBno9jX3jI&t=463s

MoureDev by Brais Moure. Cómo AÑADIR ANIMACIONES en Android Studio | Lottie Tutorial
Recuperado de: https://www.youtube.com/watch?v=h3ppaE8fBsQ&t=266s

24

También podría gustarte