如何用 android 中的部分填充星星?

How to fill a star with partially in android?

Fill star with partially Picture

看到上面的图片。 我的示例代码如下

`protected void onDraw(Canvas canvas) { 中 = getWidth()/2; int a=100,b=100; 最小 = Math.min(a, b); 脂肪 = 最小值 / 17; 一半=分钟/ 2; 弧度 = 5; mid = 中 - 一半;

     paint = new Paint();
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.STROKE);
    Path path = new Path();
    path.reset();
    paint.setStyle(Paint.Style.FILL);


 // top left
    path.moveTo(half * 0.5f, half * 0.84f);

 // top right
    path.lineTo(half * 1.5f, half * 0.84f);

 // bottom left
    path.lineTo(half * 0.68f, half * 1.45f);

 // top tip
    path.lineTo(half * 1.0f, half * 0.5f);

// bottom right
    path.lineTo(half * 1.32f, half * 1.45f);

 // top left
    path.lineTo(half * 0.5f, half * 0.84f);

    path.close();

canvas.drawPath(path, paint);
    super.onDraw(canvas);

}` 

我的问题是我们如何在 android 中部分填充星星?

我想要这个填充选项,而不仅仅是半填充星。

而且,如果我们考虑全星长度是 100%。

并且我们必须填充 20% 的星长,或者我们必须填充 50% 的星长,或者我们必须填充 70% 的星长。

填充星号的任何填充值。

你这里的path对象是给星星的'outline'。如果你想完全绘制它,那么你可以将样式设置为FILL和STROKE。但是你不能部分地绘制它。您需要创建另一个 path 对象并将 paint 设置为 FILL 并绘制它。所以理想情况下,您将分别绘制轮廓和填充。

这很简单。你已经完成了一半。您可以将您为轮廓路径所做的计算重复用于填充路径。

更新: 如果这是针对 Rating 之类的事情,那么您需要动态增加或减少填充。如果是这样的话。您可以将 FILL 绘制为 RECTANGLE,然后使用星号 OUTLINE 对其进行剪辑。那么你只需要增加或减少Rectangle的宽度即可。

更多信息在这里:How to mask out a simple region when painting in Android?

UPDATE:如果它是您想要的部分 PICTURE,那么您必须创建该图片的位图然后绘制它使用 drawBitmap()。然后使用 clipRegion().

剪切该区域,使其看起来像是部分填充的