Android LinearGradient颜色插值器不适用于Android 4.1.2

时间:2016-04-14 14:08:36

标签: android gradient samsung-mobile linear-gradients

我为自定义LinearGradient实施了垂直View。它在大多数设备上运行良好,但是我们注意到在运行Android 4.1.2的Galaxy Note 2上,渐变在颜色之间没有平滑过渡(颜色插值),但每种颜色都是从某个点开始。

我正在构建像这样的渐变

    ViewCompat.setLayerPaint(myView, null);
    Paint paint = myView.getPaintRender();
    paint.setDither(true);

    int height = myView.getHeight();

    // create a gradient background paint which will be later on clipped
    mColors = generateColorsRage(myDTOProvidingData);
    float[] percentages = generateColorPercentages();

    LinearGradient linearGradient = new LinearGradient(0, 0, 0, height, mColors, percentages, Shader.TileMode.CLAMP);

    paint.setShader(linearGradient);

有人可以指点我的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。 似乎Android 4.1.2上的LinearGradient类有一种奇怪的处理百分比的方法。 如果百分比没有至少一个值等于1f,则颜色插值似乎不起作用。

为了解决这个问题,我确保percentages[]的最后一个值设置为1fmColors[]percentages[]的长度相同正确地工作。