Barra de progreso de la barra de progreso del componente de la interfaz de usuario avanzada de Android

Hace dos días, aprendí los controles básicos del calendario del selector de fechas, el selector de tiempo y el cronómetro. Hoy, tengo un poco de comprensión de la barra de progreso, uno de los componentes avanzados de la interfaz de usuario de Android. La barra de progreso es básicamente imprescindible para todas las aplicaciones. No solo puede mostrar en tiempo real el progreso de carga de la velocidad de su red y, al mismo tiempo, aumentar la apreciación del usuario, lo que mejora en gran medida el rendimiento amigable del software, ¡así que echemos un breve vistazo hoy!

Estoy hablando del código que quiero mostrar. El código que publiqué a continuación es para implementar una barra de progreso. Generaré aleatoriamente un número natural del 0 al 10. El progreso actual en tiempo real es la suma acumulada. El tiempo de suspensión es 200 milisegundos, como si se genera un valor de 8 en 200 milisegundos, la barra de progreso es del 8 %.Si se genera un valor de 9 en los próximos 200 milisegundos, la barra de progreso en este momento alcanza (8 %+9 %). , que es 17%. Cuando la suma total llega a 100, la barra de progreso se completa. La salida del brindis se carga y la carga se completa, ¡ingrese a la siguiente interfaz!

Se han hecho muchos comentarios en el segmento de código. Si hay algo que no entiende, puede dejar un mensaje en el área de comentarios o enviarme un mensaje privado. Si hay alguna deficiencia o error en el contenido, corríjame. !

Obviamente, el conocimiento de los hilos del controlador se utiliza para completar dicha función. Permítanme decirlo brevemente. Habrá un problema sobre el mecanismo de procesamiento de los hilos del controlador en el futuro.

(Tenga en cuenta que la cantidad que introduzco a continuación la defino yo mismo, no entiendo que se debe usar el progreso actual, etc.)

introducción básica:

Un controlador simple puede entenderse como el subproceso principal y un subproceso puede entenderse simplemente como un subproceso.Android no puede completar operaciones que consumen mucho tiempo en el subproceso principal, por lo que necesita completar operaciones que consumen mucho tiempo en el subproceso. , y luego llame al objeto controlador del subproceso principal para enviar información al subproceso principal, ¡el subproceso principal actualiza la información del componente de la interfaz de usuario de acuerdo con el mensaje recibido! Entre ellos, el currentprogress.what=0 usado en el hilo secundario y luego el msg.what==0 en el hilo principal es en realidad un poco similar a la forma de startactivityforresult.

el código se muestra a continuación:

clase pública MainActivity extiende AppCompatActivity { barra de progreso privada ProgressBar; controlador de controlador privado; privado int currentprogerss=0;     @Override     protected void onCreate(Paquete de estado de instancia guardado) {         super.onCreate(estado de instancia guardado);         setContentView(R.diseño.actividad_principal);         barradeprogreso=findViewById(R.id.barradeprogreso);  handler=new Handler(){      @Override      public void handleMessage(@NonNull Message msg) {        if(msg.what==0){          ProgressBar.setProgress(currentprogersss);        }else {            Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_SHORT).show();















           barra de progreso.setVisibility(View.GONE);
Intención intent=new Intent(MainActivity.this,Main2Activity.class);
iniciarActividad(intención);
       }
     }
 };
 nuevo hilo (nuevo Runnable() {      @Override      public void run() {         while (true){             currentprogerss=work();             Message message=new Message();             if(currentprogerss<100){                 message.what=0;                 handler. sendMessage(mensaje);             }else {                 mensaje.qué=1;                 handler.sendMessage(mensaje);                 break;             }













        }
     }
    //Simular operaciones que requieren mucho tiempo
     private int work() {          currentprogerss+=Math.random()*10;          try {              Thread.sleep(200);          } catch (InterruptedException e) {              e.printStackTrace();          }          return currentprogerss ;      }







 }).comienzo();
    }

}
 

 

Supongo que te gusta

Origin blog.csdn.net/Abtxr/article/details/125836819
Recomendado
Clasificación