es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diálogo de progreso de tiempo de espera y mostrar texto invisible.

Hola, estoy escribiendo una aplicación para emparejar un dispositivo Bluetooth. Durante el emparejamiento del dispositivo, estoy agregando una barra de carga (progressDialog) y la barra de carga debe expirar (desaparecer) después de 5 segundos. Y configurar un cuadro de texto de invisible a visible que muestre el nombre del dispositivo. Y establezca un botón pair de invisible a visible para avanzar a la siguiente actividad. Sin embargo, no sé cómo poner límite de tiempo a la barra de carga, lo más cercano que puedo hacer es hacer un onBackPress. ¿Alguien podría mostrarme cómo hacer el límite de tiempo para la barra de carga por favor?

package com.example.ecyclebin;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class SetUpScreen extends AppCompatActivity {
    // Inicialización
    Button btStart; // botón de inicio de Bluetooth
    Button prButton; // botón de inicio de emparejamiento
    TextView deviceName;
    ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_up_screen);

        // establecer botón de escaneo de bt
        btStart = findViewById(R.id.scan_bt);

        // configurar botón de emparejamiento invisible
        prButton = findViewById(R.id.pair);
        prButton.setVisibility(View.INVISIBLE);

        // configurar el nombre del dispositivo invisible
        deviceName = findViewById(R.id.deviceName);
        deviceName.setVisibility(View.INVISIBLE);

        btStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Iniciar cuadro de progreso
                progressDialog = new ProgressDialog(SetUpScreen.this);
                // Mostrar diálogo
                progressDialog.show();
                // configurar vista de contenido
                progressDialog.setContentView(R.layout.progress_dialog);
                // establecer fondo transparente
                progressDialog.getWindow().setBackgroundDrawableResource(
                        android.R.color.transparent
                );
            }
        });

    }

    @Override
    public void onBackPressed() {
        // Descartar barra de progreso
        progressDialog.dismiss();

        prButton = findViewById(R.id.pair);
        prButton.setVisibility(View.VISIBLE);

        deviceName = findViewById(R.id.deviceName);
        deviceName.setVisibility(View.VISIBLE);
    }



    public void start(View v){
        Timer t = new Timer();
        TimerTask tt = new TimerTask(){
            @Override
            public void run() {
                progressDialog.dismiss();

                deviceName = findViewById(R.id.deviceName);
                deviceName.setVisibility(View.VISIBLE);

                prButton = findViewById(R.id.pair);
                prButton.setVisibility(View.VISIBLE);
            }
        };

        t.schedule(tt, 0, 3000); // Tiempo en milisegundos
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar un tiempo límite al progressDialog y hacer que desaparezca después de 5 segundos, puede usar un Handler y un Runnable. Modifique el código del onClickListener para el botón btStart de la siguiente manera:

    btStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Inicializar el progress dialog
            progressDialog = new ProgressDialog(SetUpScreen.this);
            // Mostrar el diálogo
            progressDialog.show();
            // Establecer el contenido de la vista
            progressDialog.setContentView(R.layout.progress_dialog);
            // Establecer un fondo transparente
            progressDialog.getWindow().setBackgroundDrawableResource(
                    android.R.color.transparent
            );
    
            // Establecer tiempo límite
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (progressDialog != null && progressDialog.isShowing()) {
                        progressDialog.dismiss();
                        deviceName.setVisibility(View.VISIBLE);
                        prButton.setVisibility(View.VISIBLE);
                    }
                }
            }, 5000); // 5 segundos
        }
    });
    

    Este código crea un Handler y un Runnable que desecha el progressDialog después de 5 segundos. El método postDelayed programa el Runnable después del retraso especificado (5000 milisegundos en este caso). Si el progressDialog sigue mostrándose cuando se ejecuta el Runnable, lo desecha y hace que el dispositivo dispositivo y el prButton sean visibles.

Comments are closed.