gpt4 book ai didi

android - 如何在 Android 中绘制给定大小的矩形,并将其自身定位在添加到的 View 中?

转载 作者:行者123 更新时间:2023-11-29 00:42:50 26 4
gpt4 key购买 nike

我了解如何绘制形状,我扩展了 View 类,并覆盖了 onDraw,我在其中创建了一个新的 ShapeDrawbale (矩形),然后我将其绘制到 Canvas 上:

    Rect rect = new Rect(x, y, x + width, y + height);
shapeDrawable.setBounds(rect);
shapeDrawable.getPaint().set(paint);
shapeDrawable.draw(canvas);

然后我想将其添加到我的 Activity 布局 xml 中定义的 View 中。我通过获取 View 句柄并调用:

innerLinear.addView(rectView); // where rectView is my custom class that extends View

我的问题是,在创建矩形时,您必须提供 XY 坐标。

那么 - 如何让矩形在 innerLayout 中正确定位?

我是否使用了 innerLayout 的边界来创建矩形?如果是这样,当我调用 innerLayout.getLeft()innerLayout.getTop() 等时。总是返回 0(我假设布局尚未完全完成),那我该怎么做呢?

还有别的办法吗?我觉得我在这里缺少一些非常基本的东西。

如有任何帮助,我们将不胜感激

谢谢

最佳答案

onDraw 方法中,您可以使用以下 API:

对于 x 和 y,引用点是相对于父 View 的 0,0。

getWidth() // This is in View
getHeight() // This is in View

当您在 CustomView 中调用上述 api 时,您将获得父 View 的正确尺寸,在您的情况下为 innerLayout。现在,如果我必须覆盖所有区域,我会这样写:

Rect rect = new Rect(0, 0, getWidth(), getHeight());

这将完全填充您的 CustomView。你的 0, 0 如何映射到实际的屏幕坐标,你不用担心。正如我提到的,您的 View 引用点是 0,0。 Android 将计算实际的屏幕坐标。

进一步引用:

Custom Components

How Android draws

关于android - 如何在 Android 中绘制给定大小的矩形,并将其自身定位在添加到的 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com