安卓开发学习7-1:进度条组件

  • 组件分类
  • 进度条组件
    • 基本使用
    • 进度条分类
    • 实例

组件分类

安卓开发学习7-1:进度条组件_第1张图片

进度条组件

基本使用

默认是圆形进度条

<ProgressBar
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     >ProgressBar>

安卓开发学习7-1:进度条组件_第2张图片

进度条分类

  • 圆形进度条,默认是圆形进度条
  • 长条形进度条

    可以通过style属性的值可以设置不同类型的进度条,如下是三种不同的可设置的进度条类型属性
    安卓开发学习7-1:进度条组件_第3张图片
    例如设置这个细的长型进度条,可以是如下,其中max是最大值,progress是设置当前进度:
 <ProgressBar
     android:max="100"
     android:progress="50"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="?android:attr/progressBarStyleHorizontal"
     >ProgressBar>

实例

1、需求:实现如下游戏加载界面并且使用多线程模拟加载进度,并在加载完毕后显示“加载完毕”并隐藏进度条
安卓开发学习7-1:进度条组件_第4张图片
2、xml文件实现

<?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"
    tools:context=".MainActivity"
    android:gravity="center"
    android:background="@mipmap/bg"
    >
    <ProgressBar
        android:id="@+id/progress"
        android:layout_gravity="bottom"
        android:layout_marginBottom="150dp"
        android:max="100"
        android:progress="0"
        android:layout_width="match_parent"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_height="35dp"
        style="@android:style/Widget.ProgressBar.Horizontal"
        ></ProgressBar>
</LinearLayout>

3、Java文件

package com.example.happy;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Chronometer;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;

public class MainActivity extends Activity {

    private int mprogress;
    private int LOADOVER = 0X111;
    private int LOADING = 0X110;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//      全屏显示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

        ProgressBar progressBar = findViewById(R.id.progress);

        Handler handler = new Handler(){
//          处理sendMessage发送的信息
            @Override
            public void handleMessage(@NonNull Message msg) {
                super.handleMessage(msg);

                switch (msg.what){
//                  完成
                    case 0X111:
                        Toast.makeText(MainActivity.this, "加载完毕", Toast.LENGTH_SHORT).show();
                        progressBar.setVisibility(View.GONE);
                        break;
//                  未完成
                    case 0X110:
                        progressBar.setProgress(mprogress);

                        break;
                }
            }
        };

        new Thread(new Runnable() {
            @Override
            public void run() {

                while (true){
//                  信息对象
                    Message message = new Message();
                    try {
                        doWork();
                        if( mprogress <= 100 ){
//                          加载状态设置
                            message.what = LOADING;
                        }else{
                            message.what = LOADOVER;
                        }
//                      发送信息
                        handler.sendMessage(message);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
//  模拟工作
    private void doWork() throws Exception{

        mprogress += Math.random()*20;
        Thread.sleep(1000);
    }
}

你可能感兴趣的:(#,安卓开发基础,android,java,apache)