androidprogressbar横向进度条动画效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了androidprogressbar横向进度条动画效果相关的知识,希望对你有一定的参考价值。

这篇文章主要为大家展示了“android如何实现横向进度条演示效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现横向进度条演示效果”这篇文章吧。

1.效果图:



2.布局说明:

1.textview显示进度条
2.ProgressBar进度条
3.进度条配置:

<ProgressBar
android:id="@+id/pb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100" />
其中:max可以手动设置,也就是你下载的内容大小,style也是

3.实例源码:

package com.zengtao.classwork;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.ProgressBar;

public class MainActivity extends ActionBarActivity
private ProgressBar pb; // 进度条
private int[] randData = new int[100]; // 数组
private int index = 0; // 索引
private int mProgressStaus = 0; // 设置进度条的长度
private Handler mHandler;

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

pb = (ProgressBar) findViewById(R.id.pb);
参考技术A 默认横向的ProgressBar不是一个黄色的进度条根据setProgress的值进行变化嘛,现在不想要那个黄色的进度条,而是想要一个有动画效果的进度条,依旧能根据setProgress变换长短。 参考技术B 横向那个进度条,大家会drawLine()和drawText()吧,那么通过getWidth()拿到控件的宽度,再通过getProgress()拿到进度,按比例控制绘制线的长短,字的位置还不是分分钟的事

QML 中的动画进度条

【中文标题】QML 中的动画进度条【英文标题】:Animated progress bar in QML 【发布时间】:2017-11-05 10:10:50 【问题描述】:

我需要使用 QML Controls 2 创建如下进度条:

    ProgressBar
    id:progressBar
    width : parent.width * 0.80
    height:parent.height * 0.05
    anchors.bottom:parent.bottom
    anchors.bottomMargin: (parent.height * 0.03)
    anchors.left:parent.left
    anchors.leftMargin: (parent.width * 0.05)
    value : 0.5

    background: Rectangle 
        color: "#e6e6e6"
        radius: 3
    

    contentItem: Item         
        Rectangle 
            width: progressBar.visualPosition * parent.width
            height: parent.height
            radius: 2
            color: "#17a81a"

            gradient: Gradient 
                GradientStop 
                    position: 0.0
                    SequentialAnimation on color 
                        loops: Animation.Infinite
                        ColorAnimation  from: "#14148c"; to: "#0E1533"; duration: 5000 
                        ColorAnimation  from: "#0E1533"; to: "#14148c"; duration: 5000 
                    
                
                GradientStop 
                    position: 1.0
                    SequentialAnimation on color 
                        loops: Animation.Infinite
                        ColorAnimation  from: "#14aaff"; to: "#437284"; duration: 5000 
                        ColorAnimation  from: "#437284"; to: "#14aaff"; duration: 5000 
                    
                
            
        
      

我从未在 QML 中使用过动画,我尝试使用上述顺序动画,从上到下进行动画处理。但我需要它从左到右制作动画。

谁能帮我实现这个目标?

【问题讨论】:

你已经尝试了什么?一些代码? @folibis 我已经添加了代码,请检查,我目前正在尝试使用顺序动画。 【参考方案1】:

我认为覆盖控件的系统行为是个坏主意。 无论如何,你可以玩动画渐变。例如:

ProgressBar 
    id: control
    anchors.centerIn: parent
    value: 0
    height: 20
    clip: true
    background: Rectangle 
        implicitWidth: 200
        implicitHeight: 6
        border.color: "#999999"
        radius: 5
    
    contentItem: Item 
        implicitWidth: 200
        implicitHeight: 4

        Rectangle 
            id: bar
            width: control.visualPosition * parent.width
            height: parent.height
            radius: 5
        

        LinearGradient 
            anchors.fill: bar
            start: Qt.point(0, 0)
            end: Qt.point(bar.width, 0)
            source: bar
            gradient: Gradient 
                GradientStop  position: 0.0; color: "#17a81a" 
                GradientStop  id: grad; position: 0.5; color: Qt.lighter("#17a81a", 2) 
                GradientStop  position: 1.0; color: "#17a81a" 
            
            PropertyAnimation 
                target: grad
                property: "position"
                from: 0.1
                to: 0.9
                duration: 1000
                running: true
                loops: Animation.Infinite
            
        
        LinearGradient 
            anchors.fill: bar
            start: Qt.point(0, 0)
            end: Qt.point(0, bar.height)
            source: bar
            gradient: Gradient 
                GradientStop  position: 0.0; color: Qt.rgba(0,0,0,0) 
                GradientStop  position: 0.5; color: Qt.rgba(1,1,1,0.3) 
                GradientStop  position: 1.0; color: Qt.rgba(0,0,0,0.05) 
            
        
    
    PropertyAnimation 
        target: control
        property: "value"
        from: 0
        to: 1
        duration: 5000
        running: true
        loops: Animation.Infinite
    

【讨论】:

以上是关于androidprogressbar横向进度条动画效果的主要内容,如果未能解决你的问题,请参考以下文章

Android HorizontalProgressBar 自定义横向进度条

横向时间进度条

QT进度条动画问题

为啥自定义进度条在android中没有动画?

动画进度条以显示网页的进度

持续时间长于更新时的 Qt 进度条动画