View.setX(),View.setRotation()和View.getWidth()如何相互作用?

时间:2016-06-01 17:40:59

标签: android android-layout

在Android中,我正在创建自定义布局。它包含一个我需要定位,旋转,然后精确测量的视图。

如果我有一个10x10像素的视图,我向右移动10像素,向下移动10像素,然后向下旋转45度,视图将测量自身的宽度以及精确定位的位置?

jQuery.ajax({
            type: "POST",
            url: "http://localhost:5832/api/Cage",
            data: JSON.stringify({ ssqUserId: 176650, token: 'b2fwfybdeec177hespp7orvvzvf0rv', ssqEventId: 1, baitUsed: '1', baitPlaced: '12/12/2016', cageFell: true, clickOnCageToClose: '05/01/2016', successfulOrNot: false })
            contentType: "application/json; charset=utf-8", 
            dataType: "json",
            success: function (data) {
                alert(data);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });

它仍会报告10px的宽度,还是会将其轮换考虑在内? x和y坐标是否与旋转的角对齐,还是保持固定?

1 个答案:

答案 0 :(得分:3)

rotationtranslationXtranslationYtranslationZscaleXscaleY - 这些是 Canvas 属性。这意味着您可以告诉Android在哪里绘制视图 后,相对于视图的xy位置进行了测量和布局。这些属性不会影响默认测量例程(除非您在自定义视图中覆盖onMeasure并将其考虑在内,但我强烈建议您不要这样做)。因此,更改任何这些属性都不会影响视图测量

xy - 是布局属性。这意味着此视图的父级决定相对于自身的位置,因此如果在调用onLayout之前设置这些值,则父级将覆盖这些值。如果您在 x之后覆盖yonLayout - 您可以在其父级中更改此视图的位置。但是如果你追求这种效果 - 我宁愿使用translationXtranslationY属性,因为下一次onLayout来电会再次重置xy。< / p>

但要回答您原来的问题 - 是的,它会报告10px作为其宽度。上述属性都不会实际影响视图的报告宽度或高度

编辑正如Dave指出的那样,我在布局过程中覆盖xy的原始声明并不正确。设置xy属性将在内部设置translationXtranslationY,因此更新这些属性实际上与更新翻译相同