Android LinearGradient 颜色插值器在 Android 4.1.2 上不起作用
Android LinearGradient color interpolator doesn't work on Android 4.1.2
我已经为自定义 View
实现了垂直 LinearGradient
。它在大多数设备上运行良好,但我们注意到在 Galaxy Note 2 运行 Android 4.1.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);
谁能给我指明方向?
谢谢!
我终于找到了解决方案。
Android 4.1.2 上的 LinearGradient
class 似乎有一种奇怪的处理百分比的方式。
如果百分比没有至少一个等于 1f
.
的值,颜色插值似乎不起作用
所以为了解决这个问题,我确保 percentages[]
的最后一个值设置为 1f
并且 mColors[]
和 percentages[]
的长度顺序相同这样才能正常工作。
我已经为自定义 View
实现了垂直 LinearGradient
。它在大多数设备上运行良好,但我们注意到在 Galaxy Note 2 运行 Android 4.1.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);
谁能给我指明方向?
谢谢!
我终于找到了解决方案。
Android 4.1.2 上的 LinearGradient
class 似乎有一种奇怪的处理百分比的方式。
如果百分比没有至少一个等于 1f
.
所以为了解决这个问题,我确保 percentages[]
的最后一个值设置为 1f
并且 mColors[]
和 percentages[]
的长度顺序相同这样才能正常工作。