如何用 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()
.
剪切该区域,使其看起来像是部分填充的
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()
.