多色进度条 [英] Multi Colour progress bar

查看:25
本文介绍了多色进度条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个类似于 gmail 应用程序的进度条(中间进度条),它可以改变颜色.我可以通过从 sdk/platforms 保持和更新 progress_indeterminate_horizo​​ntal.xml 来实现这一点.我不想使用动画(多色图像).我想使用 xml 来实现这一点(我想使用渐变).任何帮助将不胜感激.

提前致谢

解决方案

这是我的实现:绘制动画彩虹渐变.酷,如果我自己这么说的话.它不是基于 XML 的,但可以做成,而且它确实使用了渐变.也许它会给你一些想法.

设置:

 pb = (ProgressBar) findViewById(R.id.progressbar_Horizo​​ntal);GradientDrawable Rainbow = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED});AnimationDrawable 广告 = getProgressBarAnimation();pb.setBackgroundDrawable(ad);

动画:

 private AnimationDrawable getProgressBarAnimation(){GradientDrawable Rainbow1 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW});GradientDrawable Rainbow2 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] { Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN});GradientDrawable Rainbow3 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN });GradientDrawable Rainbow4 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] { Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE });GradientDrawable Rainbow5 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] { Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA });GradientDrawable Rainbow6 = new GradientDrawable(Orientation.LEFT_RIGHT,new int[] {Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED });GradientDrawable[] gds = new GradientDrawable[] {rainbow1, Rainbow2, Rainbow3, Rainbow4, Rainbow5, Rainbow6};AnimationDrawable 动画 = new AnimationDrawable();for (GradientDrawable gd: gds){动画.addFrame(gd, 100);}动画.setOneShot(假);返回动画;}

<块引用>

科特林

设置:

 val ad = getProgressBarAnimation()progressBar.background = 广告

动画:

fun getProgressBarAnimation(): AnimationDrawable {val Rainbow1 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW))val Rainbow2 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN))val Rainbow3 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN))val Rainbow4 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE))val Rainbow5 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA))val Rainbow6 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED))val gds = arrayListOf(rainbow1,rainbow2,rainbow3,rainbow4,rainbow5,rainbow6)val 动画 = AnimationDrawable()for (gd in gds) {animation.addFrame(gd, 100)}动画.isOneShot = false;返回动画;}

I want to create a progress bar (intermediate progress bar) similar to gmail app which change colours.I am able to this by keeping and updating progress_indeterminate_horizontal.xml from sdk/platforms. I don't want to use animation (multi colour images). I want to achieve this using xml (i want use gradient). Any help will be appreciated.

Thanks in advance

解决方案

Here's my implementation: Draws an animated rainbow gradient. Cool, if I do say so myself. It's not XML-based, but could be made to be, and it does use gradients. Perhaps it will give you some ideas.

Setup:

    pb = (ProgressBar) findViewById(R.id.progressbar_Horizontal);
    GradientDrawable rainbow = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED});

    AnimationDrawable ad = getProgressBarAnimation();
    pb.setBackgroundDrawable(ad);

And animate:

    private AnimationDrawable getProgressBarAnimation(){

    GradientDrawable rainbow1 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW});

    GradientDrawable rainbow2 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] { Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN});          

    GradientDrawable rainbow3 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN });

    GradientDrawable rainbow4 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] { Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE });

    GradientDrawable rainbow5 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] { Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA });

    GradientDrawable rainbow6 = new GradientDrawable(Orientation.LEFT_RIGHT,
            new int[] {Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED });


    GradientDrawable[]  gds = new GradientDrawable[] {rainbow1, rainbow2, rainbow3, rainbow4, rainbow5, rainbow6};

    AnimationDrawable animation = new AnimationDrawable();

    for (GradientDrawable gd : gds){
        animation.addFrame(gd, 100);

    }

    animation.setOneShot(false);

    return animation;


}

Kotlin

Setup:

    val ad = getProgressBarAnimation()
    progressBar.background = ad

And animate:

fun getProgressBarAnimation(): AnimationDrawable {

    val rainbow1 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW))

    val rainbow2 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN))

    val rainbow3 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN))

    val rainbow4 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE))

    val rainbow5 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA))

    val rainbow6 = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
            intArrayOf(Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED))


    val gds = arrayListOf(rainbow1, rainbow2, rainbow3, rainbow4, rainbow5, rainbow6)

    val animation = AnimationDrawable()

    for (gd in gds) {
        animation.addFrame(gd, 100)
    }

    animation.isOneShot = false;

    return animation;
}

这篇关于多色进度条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆