Está en la página 1de 4

Aplicaciones MOviles

Gráficos en Android Studio con Kotlin

Los datos de un vector ,que pueden ser suministrados por archivos locales o externos Remotos ,
pueden ser graficados en diferentes formas el Android ofrece hasta 15 graficos diferentes , pero
vamos a emplear a realizar los graficos de Tortas y Barras. Como se muestra en la figura.

Para ello vamos a importar algunas librerías comenzando por :

Prof. Ing. Alberto Moreno


Aplicaciones MOviles

Buil.gradle (Module) agregar la implementación

implementation 'com.github.PhilJay:MPAndroidChart:v2.2.4'

Luego en setting.gradle agregar: solo el


maven{ url 'https://jitpack.io' }
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
jcenter()
maven { url 'https://jitpack.io' }
}
}

Diseñando las pantallas: para la pantalla1 de Torta


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity3">

<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="grafica"
android:text="graficar" />

<com.github.mikephil.charting.charts.PieChart
android:id="@+id/torta"
android:layout_width="match_parent"
android:layout_height="371dp">

</com.github.mikephil.charting.charts.PieChart>
</LinearLayout>

Para la pantalla2 de Barras

Prof. Ing. Alberto Moreno


Aplicaciones MOviles

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity4">

<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="grafica2"
android:text="GRaficar ventas Barras" />

<com.github.mikephil.charting.charts.BarChart
android:id="@+id/barra"
android:layout_width="match_parent"
android:layout_height="421dp">

</com.github.mikephil.charting.charts.BarChart>
</LinearLayout>

La codificacion de los formulario primero para el de tortas:


import kotlinx.android.synthetic.main.activity_main3.*
import java.util.*
import java.util.Random
class MainActivity3 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main3)

}
fun genera(ini:Int,final:Int):Int{

val rand=Random();
return rand.nextInt(final-ini+1)+ini

public fun grafica(v:View) {


val datos = ArrayList<Entry>();
val meses:Array<String> =
arrayOf("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Set","Oct","Nov"
,"dic")
for (m: Int in 0..11) {
datos.add(Entry((genera(100, 2000)).toFloat(), m))
}
val ds:PieDataSet =PieDataSet(datos,"venta")
torta.animateX(1500)
val pd=PieData(meses,ds)
ds.setColors(ColorTemplate.COLORFUL_COLORS)
torta.setData(pd)

Prof. Ing. Alberto Moreno


Aplicaciones MOviles

}
}

para el de barras:
import com.github.mikephil.charting.data.*
import com.github.mikephil.charting.utils.ColorTemplate

import kotlinx.android.synthetic.main.activity_main4.*
import java.util.*

class MainActivity4 : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main4)
}
fun genera(ini:Int,final:Int):Int{

val rand= Random();


return rand.nextInt(final-ini+1)+ini

public fun grafica2(v: View) {


val datos = ArrayList<BarEntry>();
val meses:Array<String> =
arrayOf("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Set","Oct","Nov"
,"dic")
for (m: Int in 0..11) {
datos.add(BarEntry((genera(100, 2000)).toFloat(), m))
}
val ds: BarDataSet = BarDataSet(datos,"venta")
barra.animateX(1500)
val pd= BarData(meses,ds)
ds.setColors(ColorTemplate.COLORFUL_COLORS)
barra.setData(pd)

}
}

EXPERMIENTAR
1.- Generar un grafico de Tortas y barras para las notas de un grupo de 50 alumnos
cuyas notas están entre 0-20 , luego graficarlos la cantidad de alumnos que se
encuentran entre:
[0-5] [6-11] [12-16] [17-20]

Prof. Ing. Alberto Moreno

También podría gustarte