2012-01-19 6 views
2

位置が正しく変換されていることを確認しながら手動でビューを拡大縮小する方法はありますか?私が今すぐスケールすることができる唯一の方法は、本質的に幅と高さに倍率を掛けてLayoutParamsを更新することです。これは問題なく動作しますが、正しく位置を変換する方法についてはわかりません。さらに、ピボットを中心にビューを拡大縮小したい。 I実際にそうようScaleAnimationを使用して、私が欲しいの動作を実行することができるよ、Android:ビューの手動スケーリング

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

しかし、実際のビューの境界が調整されていません。スケーリングの実装の大部分は、常にImageViewを扱うのを助けるので、私はViewだけを要求する価値があると考えました。私はこの問題について考えている人がいれば、とても感謝しています。

答えて

4

ビューの縮尺を変えたい場合は、ビューの中央から縮尺を変えたいと思うようです。ビューは親の左上隅からの上端と左端のオフセットに基づいて配置されるため、これは難しいです。

そう - あなたは左から上から100pxに、そして100pxにあるビューを持っており、サイズはは50pxでは50pxされている場合 - あなたは+ 10%で、それをスケールする:

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

でも、余分な5ピクセルはビューの右下に追加されます。

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

(これは明らかに左と同じです)を調整するために、ビューのオフセットを変更する必要があります。

このパターンを使用すると、中心点の一貫性を保つように表示を拡大/縮小できます。

関連する問題