实现简单的进度条

实现简单的进度条

前言

使用进度条提示程序使用进度。
当在布局文件中添加进度条时,代码如下:

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

运行结果如下:
运行效果
我们可以知道,如果不加设置,默认的结果就会这样。
接下来,通过更改style属性,设置进度条样式。主要分为两种方法:
1.通过主题属性进行设置
2.通过定义好的样式资源设置
演示:

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:max="100"
    android:progress="50"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

运行效果

实例

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp"
    android:background="@mipmap/im0514"
    tools:context=".MainActivity">
<ProgressBar
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:max="100"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="10dp"/>
</RelativeLayout>

activity如下:

package com.example.cloudread;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity{
    private ProgressBar progressBar;//定义进度条对象,不对她进行实例化
    private int mProgress=0;//整形变量,记录完成进度
    private Handler mHandler;//定义处理消息的handle对象,不初始化
    // 都声明为私有
    @Override
    protected void onCreate(Bundle savedInstanceState) {//在该方法中获得进度条对象
        super.onCreate(savedInstanceState);
        setContentView(R.layout.friend);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
        progressBar=(ProgressBar)findViewById(R.id.progressBar);//获取进度条对象
        mHandler=new Handler(){// 实例化处理消息的Handle类,通过它,我们可以通过发送消息来更新UI组件
            @Override
            public void handleMessage(Message msg) {
                //判断耗时操作是否完成。如果没有完成,更新进度,否则,设置进度条不显示
                if(msg.what==0x111){
                    progressBar.setProgress(mProgress);//设置进度条更新
                }else{
                    Toast.makeText(MainActivity.this,"耗时操作已完成",Toast.LENGTH_SHORT).show();
                    progressBar.setVisibility(View.GONE);//设置进度条不显示
                }
            }
        };
        new Thread(new Runnable() {//模拟耗时操作
            @Override
            public void run() {
                while (true){//实时获取耗时操作完成的百分比,直到耗时操作的结束
                    mProgress=doWork();// 该方法的返回值,就是完成的进度
                    Message m=new Message();//创建并实例化消息对象,用于更新进度条进度
                    if(mProgress<100){//判断当前进度是否完成
                        m.what=0x111;//自定义消息代码,通过她可以区分消息,以便进行不同的处理
                        mHandler.sendMessage(m);//发送消息
                    }else{
                        m.what=0x110;//表示耗时操作已完成
                        mHandler.sendMessage(m);
                        break;
                    }
                }
            }
            private int doWork(){//编写doWork方法
                mProgress+=Math.random()*10;//改变完成进度
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return mProgress;
            }
        }).start();//开启线程
    }
}

运行结果:
运行结果
在这里插入图片描述
作者:汪振宇 原文地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 uniapp 中实现拖动进度条,你可以按照以下步骤进行操作: 1. 在你的页面中添加一个进度条组件,可以使用 `<progress>` 标签或者第三方组件库中的进度条组件。例如,如果你使用的是 uni-ui 组件库,可以使用其提供的 `<uni-progress>` 组件。 2. 在 data 中添加一个变量来存储进度条的当前值。例如,你可以在 data 中添加一个名为 `progressValue` 的变量,并将其初始化为某个默认值。 3. 监听进度条的拖动事件,当用户拖动进度条时,更新当前的进度条值。具体的实现方式取决于你选择的组件库和进度条组件。一般而言,你需要监听其 `change` 或 `drag` 事件,并在事件回调中更新 `progressValue` 变量。 4. 使用计算属性或监听器来动态更新页面中展示进度条的样式。根据 `progressValue` 的值,你可以设置进度条的宽度或者其他相关样式属性。 下面是一个简单的示例代码,演示了如何在 uniapp 中实现拖动进度条: ``` <template> <view> <uni-progress :percent="progressValue" @change="handleProgressChange"></uni-progress> </view> </template> <script> export default { data() { return { progressValue: 50, // 初始化进度条值 }; }, methods: { handleProgressChange(value) { this.progressValue = value; // 更新进度条值 }, }, }; </script> ``` 在上面的示例中,我们使用了 uni-ui 组件库中的 `<uni-progress>` 组件,并通过 `:percent` 属性绑定了进度条的值。在 `@change` 事件回调中,我们更新了 `progressValue` 变量。 请根据你的具体需求和所使用的组件库,调整代码以实现你想要的效果。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值