使用Android中没有渐变的2种颜色创建自定义颜色

时间:2015-12-17 09:07:59

标签: android colors

我正在构建一个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()行,我最终会得到灰色的颜色。此外,我预料到的另一个问题是,当进度/滚轮正在递增时,我将不再有蓝白蓝 - 白段,而是蓝蓝 - 白 - 白段。

1 个答案:

答案 0 :(得分:0)

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

然后你可以用drawabe绘制它:

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

我希望它有所帮助