2012-01-19 85 views
2

有没有办法在确保位置正确转换的同时手动缩放视图?我现在可以缩放的唯一方法是通过将宽度和高度乘以比例因子来更新LayoutParams。这工作正常,但我不知道如何正确翻译位置。此外,我想要以枢轴为中心来缩放视图。实际上,我能够通过使用ScaleAnimation像这样执行我想用行为,Android:手动缩放视图

ScaleAnimation anim = new ScaleAnimation(fromX, toX, 
       fromY, toY, ScaleAnimation.RELATIVE_TO_SELF, 
       0.5f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f); 

然而,实际的视图边界不作调整。大多数缩放实现和帮助总是处理ImageView,所以我认为它值得只需要一个视图。如果有任何关于此事的想法,我会非常感激。

回答

4

这听起来像你想缩放视图,但从视图的中心缩放它。这是非常棘手的,因为视图的位置是基于其父对象左上角的顶部和左侧偏移量。

所以 - 如果你有一种观点认为是从顶部100像素,100像素,并从左侧,大小50像素50像素 - 你想要+ 10%缩放:

width = 50px * 1.1 = 55px; 
height = 50px * 1.1 = 55px; 

但这些额外的5px将被添加到视图的右侧和底部,对吧?所以我们需要改变抵消观的调整:

top = 100px - ((100px * .1)/2) = 97.5px 

(同为左,很明显)。

使用此模式,您可以以保持中心点一致的方式缩放视图。