【问题标题】:Creating a custom color using 2 colors that aren't gradient in Android使用 Android 中非渐变的 2 种颜色创建自定义颜色
【发布时间】:2015-12-17 09:07:58
【问题描述】:

我正在构建一个 Android 应用程序,并且我正在构建一个自定义进度条/滚轮。

我想要做的不是使用纯色来指示进度,而是使用 2 种颜色(现在是蓝色和白色),但颜色不应该是渐变色,它应该只是蓝色和白色彼此相邻,没有任何渐变。

到目前为止,这是我尝试过的。我有一个 gradient_bg.xml 文件声明如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient
        android:type="linear"
        android:startColor="#FFFFFFFF"
        android:endColor="#FF008080"
        android:angle="90"/>
</shape>

我在我的代码中使用它:

barPaint.setColor(getResources().getColor(R.drawable.gradient_bg));

但是,由于它不是颜色,所以我不能将其用作颜色。如果我删除 getResources().getColor() 行,我最终会得到一个灰色的颜色。此外,我预计的另一个问题是,当进度/轮子在进行中递增时,我将不再有蓝-白-蓝-白段,而是蓝-蓝-白-白段。

【问题讨论】:

    标签: android colors


    【解决方案1】:

    您可以使用layer-list 组合更复杂的drawable。 请参阅此 StackOverflow 问题,了解如何:Understanding Android's <layer-list>

    那你就可以用drawabe来画了:

    • 获取可绘制对象Drawable d = getResources.getDrawable(R.drawable.two_colors);
    • 设置可绘制对象的大小以匹配您的自定义栏d.setBounds(0, 0, width, height);
    • 并在视图画布上绘图d.draw(canvas);

    希望对你有帮助

    【讨论】:

    • 但是我可以用这个作为颜色吗?
    • 据我所知,您只能将颜色用作实际颜色,甚至您当前使用“”的代码也不应该工作。但你总是可以尝试,嗯?
    猜你喜欢
    • 2012-11-01
    • 2017-06-27
    • 1970-01-01
    • 2019-12-07
    • 2018-03-26
    • 2017-08-19
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多