我试图显示在上一个屏幕中绘制的画布图像的网格视图。我有一组在第一个屏幕中绘制的不同视图,这些视图会发生变化,这些画布将根据用户的操作重新绘制。我有 5 个心形画布视图,并且我对每颗心使用不同的视图,这意味着我没有使用同一类来绘制五颗心,而是对 5 颗不同的心使用 5 个不同的类。当用户点击时,这些心形将充满颜色。
在下一页中,我试图仅查看上一页中绘制的心形,并且此处不涉及任何操作,因为该页面仅用于查看目的。本页可以包含 N 个红心,但上一页在任何时刻都只有 5 个红心。为此,我在显示页面中使用单个视图来显示所有红心。但我得到的只是最后绘制的心形,之前所有其他的心形都被覆盖了。
我填充心脏的想法是在其上绘制一个矩形并剪裁路径。
我的 onDraw 是:
path.moveTo(left_x_moveto, left_y_moveto);
path.cubicTo(left_x1,left_y1,left_x2,left_y2,left_x3,left_y3);
path.moveTo(left_x_moveto, left_y_moveto);
path.cubicTo(right_x1,right_y1,right_x2,right_y2,right_x3,right_y3);
this.setDrawingCacheEnabled(true);
rect = new Rect((int)(canvas.getWidth()*.10),(int)(canvas.getHeight()*filled_amount),(int) canvas.getWidth(), (int) canvas.getHeight());
canvas.clipPath(path);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.FILL);
canvas.drawPath(path, paint);
canvas.drawRect(rect, rect_paint);
heart_outline_paint.setColor(getResources().getColor(R.color.heart_outline_color)); // Change the boundary color
heart_outline_paint.setStrokeWidth(15);
heart_outline_paint.setStyle(Paint.Style.STROKE);
canvas.drawPath(path, heart_outline_paint);
我将视图添加到视图数组列表中的部分:
public static ArrayList<View> heart_views = new ArrayList<View>();
for(int i=0;i<dbHelper.getHeartPercentagesForSummary().size();i++)
{
SummaryHeartShape.filled_amount = .90 - (dbHelper.getHeartPercentagesForSummary().get(i)*0.008);
SummaryHeartShape summary_heart_shape = new SummaryHeartShape(getActivity());
summary_heart_shape.invalidate();
heart_views.add(summary_heart_shape);
}
我认为onDraw()
当我创建实例时将被调用SummaryHeartShape
class.
正如你所看到的,每次我将矩形填充到不同的高度时,该高度由下式给出SummaryHeartShape.filled_amount
这个静态变量在矩形的 onDraw 中被分配为
rect = new Rect((int)(canvas.getWidth()*.10),(int)(canvas.getHeight()*filled_amount),(int) canvas.getWidth(), (int) canvas.getHeight());
所以这基本上意味着将根据我给出的高度绘制矩形,并且每次都不同,我应该接收具有该矩形高度的画布视图,但每次我得到具有相同高度的相同矩形。
我的屏幕,用户可以在其中填满心灵 -充实的心 http://prntscr.com/8m4ita
我的屏幕,用户可以在其中查看填充的心 -心的总结 http://prntscr.com/8m4j5m
您可以清楚地看到第一页中的心形已正确填充,但第二页中的心形仅显示最后填充的心形。
我已经检查了传递给的值SummaryHeartShape.filled_amount
,一直都是不同的,但即使我的心碎了!!!!
有人可以帮我修复我的心吗?如果有任何疑问或者我想更清楚地说明这一点,请随时提出。