【发布时间】:2015-05-13 12:14:09
【问题描述】:
我正在尝试绘制下面的图像,但我不确定如何绘制灰色和黑色矩形。我已经完美完成的红色矩形因此将感谢有人告诉我帽子可以实现以下目标:
- 7 个灰色矩形等宽
- 6 个黑色矩形,每个 1 像素
- 以上所有内容都将被绘制在红色矩形之间,以便它看起来完全像吹气的图像。
如果可以的话,请尽量避免在灰色和黑色矩形的 x 位置使用像素数,因为我希望绘图在所有屏幕尺寸下看起来都一样。
我们将不胜感激。
非常感谢。
我正在努力实现的目标
我目前取得的成就
项目代码
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//red shapes
mRedRect0F = new RectF(0, 0, 10, measuredHeight);
mRedRect1F = new RectF(getWidth() - 10, 0, getWidth(), getHeight());
//grey shapes
mGreyRect0F = new RectF(10, 0, getWidth() / 7, measuredHeight);
mGreyRect1F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
mGreyRect2F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
mGreyRect3F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
mGreyRect4F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
mGreyRect5F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
mGreyRect6F = new RectF(10, 0, getWidth() / 7 - 20, measuredHeight);
//black shapes
mBlackRect0F = new RectF(0, 0, 1, measuredHeight);
mBlackRect1F = new RectF(0, 0, 1, measuredHeight);
mBlackRect2F = new RectF(0, 0, 1, measuredHeight);
mBlackRect3F = new RectF(0, 0, 1, measuredHeight);
mBlackRect4F = new RectF(0, 0, 1, measuredHeight);
mBlackRect5F = new RectF(0, 0, 1, measuredHeight);
mBlackRect6F = new RectF(0, 0, 1, measuredHeight);
//draw red shapes
canvas.drawRect(mRedRect0F, mRedRectPaint);
canvas.drawRect(mRedRect1F, mRedRectPaint);
//draw grey shapes
canvas.drawRect(mGreyRect0F, mGreyRectPaint);
canvas.drawRect(mGreyRect1F, mGreyRectPaint);
canvas.drawRect(mGreyRect2F, mGreyRectPaint);
canvas.drawRect(mGreyRect3F, mGreyRectPaint);
canvas.drawRect(mGreyRect4F, mGreyRectPaint);
canvas.drawRect(mGreyRect5F, mGreyRectPaint);
canvas.drawRect(mGreyRect6F, mGreyRectPaint);
//draw black shapes
canvas.drawRect(mBlackRect0F, mGreyRectPaint);
canvas.drawRect(mBlackRect1F, mGreyRectPaint);
canvas.drawRect(mBlackRect2F, mGreyRectPaint);
canvas.drawRect(mBlackRect3F, mGreyRectPaint);
canvas.drawRect(mBlackRect4F, mGreyRectPaint);
canvas.drawRect(mBlackRect5F, mGreyRectPaint);
canvas.drawRect(mBlackRect6F, mGreyRectPaint);
}
【问题讨论】:
-
可以很容易地使用LinearLayout结合权重和水平方向来实现。
-
需要看看它是如何完成的/更喜欢以编程方式完成它(因为我将在我的活动中将它与其他组件一起使用)。请记住,其他矩形和文本将在不久的将来在此之上绘制
-
通过线性布局很容易实现
-
请看一下这张图片并告诉我是否同样适用于我想要实现的目标。 link to desired image
-
您甚至不需要分隔线,只需将背景设置为黑色并在左侧每个矩形之间留出 1-2dp 的边距。也就是说,如果您使用 xml 方式。当您指定需要以编程方式完成时,我会避免发布 xml。
标签: java android android-layout android-activity android-canvas