Android:手动缩放视图

时间:2012-01-19 23:18:04

标签: android view scale

有没有办法手动缩放视图,同时确保位置正确转换?我现在可以扩展它的唯一方法是通过基本上将宽度和高度乘以比例因子来更新LayoutParams。这没关系,但我不确定如何正确翻译位置。此外,我想以枢轴为中心来缩放视图。我实际上可以通过使用ScaleAnimation来执行我想要的行为,

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

但是,实际视图的界限未调整。大多数扩展实现和帮助总是处理ImageView所以我认为它值得要求仅查看。如果对此事有任何想法,我将非常感激。

1 个答案:

答案 0 :(得分:4)

听起来您想缩放视图,但要从视图中心缩放视图。这很棘手,因为View的位置是基于它从其父级左上角的顶部和左侧偏移量。

所以 - 如果你的视图从顶部开始是100px,从左边开始是100px,大小是50px到50px - 你想要将其缩放+ 10%:

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

但是那些额外的5px将添加到View的右侧和底部,对吧?所以我们需要更改View的偏移量来调整:

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

(显然左边相同)。

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