• 带进度条的APP启动页面


    今天想给APP做一个带进度条的启动页面,照着别人的例子总出错。也没看懂,反正我也不知道怎么蒙对的。

    我是小白,没搞清楚什么不能在主线程中更新UI等等一大堆原理,总之这样写没报错,记录一下:

    new Handler(new Handler.Callback()

    会自动生成方法。

    activity_start.xml:只是在背景上加了一个进度条:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:background="@drawable/start"
     8     tools:context=".StartActivity">
     9     
    10     <ProgressBar
    11         android:id="@+id/progressBar"
    12         style="@android:style/Widget.ProgressBar.Horizontal"
    13         android:layout_width="match_parent"
    14         android:layout_height="wrap_content"
    15         android:layout_marginBottom="50dp"
    16         android:layout_marginLeft="@dimen/l_padding"
    17         android:layout_marginRight="@dimen/l_padding"
    18         android:max="100"
    19         android:progress="50"
    20         app:layout_constraintEnd_toStartOf="parent"
    21         app:layout_constraintBottom_toBottomOf="parent"
    22         app:layout_constraintStart_toStartOf="parent" />
    23         
    24 </androidx.constraintlayout.widget.ConstraintLayout>

    StartActivity.java:只需要改背景图片、包名、跳转页

     1 package com.example.career;
     2 
     3 import androidx.annotation.NonNull;
     4 
     5 import android.app.Activity;
     6 import android.content.Intent;
     7 import android.os.Bundle;
     8 import android.os.Handler;
     9 import android.os.Message;
    10 import android.view.View;
    11 import android.widget.ProgressBar;
    12 import android.widget.Toast;
    13 
    14 public class StartActivity extends Activity {
    15 
    16     private ProgressBar progressBar;
    17     private int mProgress = 0;
    18     private Handler mHandler;
    19 
    20     @Override
    21     protected void onCreate(Bundle savedInstanceState) {
    22         super.onCreate(savedInstanceState);
    23         setContentView(R.layout.activity_start);
    24 
    25         progressBar = findViewById(R.id.progressBar);
    26 
    27         mHandler = new Handler(new Handler.Callback() {
    28 
    29             @Override
    30             public boolean handleMessage(@NonNull Message message) {
    31 
    32                 if (message.what == 0x111) {
    33 
    34                     progressBar.setProgress(mProgress);
    35 
    36                 } else {
    37 
    38          39                     progressBar.setVisibility(View.GONE);
    40                     Intent intent = new Intent(StartActivity.this, MainActivity.class);  //跳转页
    41                     startActivity(intent);
    42                 }
    43 
    44                 return false;
    45             }
    46 
    47         });
    48 
    49         //启动线程来执行任务
    50 
    51         new Thread(new Runnable() {
    52             @Override
    53             public void run() {
    54                 while (true) {
    55                     mProgress = doWork();
    56                     Message m = new Message();
    57                     if (mProgress < 100) {
    58                         m.what = 0x111;
    59                         mHandler.sendMessage(m);
    60                     } else {
    61                         m.what = 0x110;
    62                         mHandler.sendMessage(m);
    63                         break;
    64                     }
    65                 }
    66             }
    67 
    68             private int doWork() {
    69 
    70                 mProgress += Math.random() * 10;
    71 
    72                 try {
    73                     Thread.sleep(200);
    74                 } catch (InterruptedException e) {
    75                     e.printStackTrace();
    76                 }
    77                 return mProgress;
    78 
    79             }
    80 
    81         }).start();
    82 
    83     }
    84 
    85 }
    以前的是程序员的老板,现在是末路出家的程序员小白。
  • 相关阅读:
    题解-亚瑟王的宫殿
    学习总结-网络流
    题解-牛奶模式
    题解-最长回文子串
    最大公约数
    DetachedCriteria类中uniqueResult()方法与list()方法区别
    MD5加密方法
    dom4j读取xml文档,通过JDBC写入数据库
    Numpy增加一列,指定概率指定参数
    python 贪吃蛇
  • 原文地址:https://www.cnblogs.com/xiaoyao-blog/p/13627536.html
Copyright © 2020-2023  润新知