View的Scale属性不会改变宽高
今天算是遇到一个问题, 一个View的scale改变之后, 我怎么去计算view里面的位置呢, 比如画一个点在他的某个点上, x和y需要相应进行scale换算吗?
看完上面的内容, 很明显, scale不会改变view的宽高, 那么到底该如何进行下一步呢?
答案就是:
其实就跟当他没有scale的时候计算好x和y值就好了, scale属性只是说看起来缩小了, 实际内容还是在原来宽高布局的.
记录一下, 可以看看源码, 如何实现的.
/**
* Sets the amount that the view is scaled in x around the pivot point, as a proportion of
* the view's unscaled width. A value of 1 means that no scaling is applied.
*
* @param scaleX The scaling factor.
* @see #getPivotX()
* @see #getPivotY()
*
* @attr ref android.R.styleable#View_scaleX
*/
public void setScaleX(float scaleX) {
if (scaleX != getScaleX()) {
scaleX = sanitizeFloatPropertyValue(scaleX, "scaleX");
invalidateViewProperty(true, false);
mRenderNode.setScaleX(scaleX);
invalidateViewProperty(false, true);
invalidateParentIfNeededAndWasQuickRejected();
notifySubtreeAccessibilityStateChangedIfNeeded();
}
}
翻译过来就是:
设置视图在枢轴点周围以x缩放的数量,作为的比例视图的未缩放宽度。值1表示不应用缩放。
看懂非懂, 感兴趣的同学进一步看代码, 我这里就不分析了.