Barra de progreso en Kotlin

Android ProgressBar es un control de interfaz de usuario que indica el progreso de una operación. Por ejemplo, descargando un archivo, subiendo un archivo a internet podemos ver la barra de progreso para estimar el tiempo restante en funcionamiento. Hay dos modos de ProgressBar: 

  • Barra de progreso determinada
  • Barra de progreso indeterminada

Barra de progreso determinada 

En común, usamos el modo Determinar progreso en ProgressBar porque muestra la cantidad de progreso que ha ocurrido como el porcentaje (%) del archivo descargado, cuántos datos se cargaron o descargaron en Internet, etc. Si tenemos que usar determinado, establecemos el estilo de la barra de progreso de la siguiente manera: 

XML

<ProgressBar
    android:id="@+id/pBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Barra de progreso indeterminada 

Aquí, no tenemos la idea de que el progreso del trabajo significa cuánto se ha completado o cuánto tiempo llevará completarlo. 
Podemos usar la barra de progreso indeterminada como se muestra a continuación al establecer el atributo indeterminado como verdadero. 

XML

<ProgressBar
    android:id="@+id/pBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true"/>

Diferentes atributos de los widgets ProgressBar

Atributos XML

Descripción

Android: identificación Se utiliza para identificar de forma única el control.
Android: min Se utiliza para establecer el valor mínimo
android: máximo Se utiliza para establecer el valor máximo
Android: progreso Se utiliza para establecer el valor entero de progreso predeterminado entre 0 y máx.
Android: altura mínima Se utiliza para establecer la altura de la barra de progreso.
android: ancho mínimo Se utiliza para establecer el ancho de la barra de progreso.
android:fondo Se utiliza para establecer el color de fondo de la barra de progreso
Android: indeterminado Se utiliza para habilitar el modo de progreso indeterminado.
Android: relleno Se utiliza para configurar el relleno para la izquierda, la derecha, la parte superior o la parte inferior de la barra de progreso.

Agregue el widget ProgressBar en el archivo activity_main.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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">
 
    <!-- adding progress bar -->
    <ProgressBar
        android:id="@+id/progress_Bar"
        style="?android:attr/progressBarStyle"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="150dp"
        android:indeterminate = "true"
        android:max="100"
        android:minWidth="200dp"
        android:minHeight="50dp"
        android:visibility="invisible"
        android:layout_centerInParent="true"
        android:progress="0"
        android:layout_marginStart="70dp" />
   
    <!-- adding textview which will show the progress -->
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/progress_Bar"
        android:layout_centerHorizontal="true" />
  
     <!-- adding button to start the progress -->
    <Button
        android:id="@+id/show_button"
        android:layout_width="191dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_view"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="20dp"
        android:text="Progress Bar"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="70dp" />
 
</RelativeLayout>

Acceda al widget ProgressBar en el archivo MainActivity.kt

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.ProgressBar
import android.widget.TextView
import android.os.Handler
 
class MainActivity : AppCompatActivity() {
 
    private var progressBar: ProgressBar? = null
    private var i = 0
    private var txtView: TextView? = null
    private val handler = Handler()
     
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
         
        // finding progressbar by its id
        progressBar = findViewById<ProgressBar>(R.id.progress_Bar) as ProgressBar
       
        // finding textview by its id
        txtView = findViewById<TextView>(R.id.text_view)
         
        // finding button by its id
        val btn = findViewById<Button>(R.id.show_button)
         
        // handling click on button
        btn.setOnClickListener {
            // Before clicking the button the progress bar will invisible
            // so we have to change the visibility of the progress bar to visible
            // setting the progressbar visibility to visible
            progressBar.visibility = View.VISIBLE
             
            i = progressBar.progress
             
            Thread(Runnable {
                // this loop will run until the value of i becomes 99
                while (i < 100) {
                    i += 1
                    // Update the progress bar and display the current value
                    handler.post(Runnable {
                        progressBar.progress = i                       
                        // setting current progress to the textview
                        txtView!!.text = i.toString() + "/" + progressBar.max
                    })
                    try {
                        Thread.sleep(100)
                    } catch (e: InterruptedException) {
                        e.printStackTrace()
                    }
                }
                 
                // setting the visibility of the progressbar to invisible
                // or you can use View.GONE instead of invisible
                // View.GONE will remove the progressbar
                progressBar.visibility = View.INVISIBLE
               
            }).start()
        }
    }
}

Archivo AndroidManifest.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.geeksforgeeks.myfirstkotlinapp">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

Producción:

Publicación traducida automáticamente

Artículo escrito por bibeksah36 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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