私はこれを試していない、あなたの質問を読むときにちょうど私の心に来た。これはどうですか。
ImageViewにパディングがなく、重力が中央に設定されているとします。問題は、Drawableの幅と高さを単純に使用して、ImageViewに合わせてサイズが変更される可能性があるため、矩形の位置を計算できないことです。したがって、ImageViewの寸法とImageViewとDrawableの比率を使用する必要があります。
DrawableとImageViewの比率が等しい場合、DrawableがImageViewを完全に満たし、次に矩形がImageViewのサイズと一致します。 (0/0)、(幅ImageView/0)、(幅ImageView、高さImageView)、(0 /高さImageView)、
矩形の座標は、左上隅からカウンターワイズです。比率が一致せず、たとえばDrawableがImageViewよりも広いとすると、DrawableはImageViewの全幅を塗りつぶしますが、高さは埋められません。 Drawableが中心に来るにつれてDrawablesの左上隅のy座標を計算することができます。最初に、ImageViewのDrawableの現在の高さを計算します。これは、DrawableがImageViewに合わせてサイズ変更された元の寸法を持たないため、完了する必要があります。左上隅の座標の
current height Drawable = (Drawable height/Drawable width) * ImageView width
y値:
y = (ImageView height - Drawable current height)/2
したがって矩形の座標は(左上隅から賢明カウンタ)である:(0/Y)、( (0/y +現在の高さDrawable)
私はあなたがアイデアを得ることを望みます。 DrawableがImageViewよりも高い場合は、同じ方法で計算できますが、幅と高さの値を交換する必要があります。
出典
2012-01-28 14:46:18
Flo
これはDrawableの幅と高さのみを示しますが、Drawableを囲む矩形が必要です。 – ipman
あなたは何を意味するかをもっとよく説明できますか?あなたはImageViewからのレイアウトを意味しますか? – Andreas
いいえ、ImageViewには、ImageViewの境界とDrawableの間にある程度のスペースがあることがあります。私はこの間隔を私の矩形に含めたくありません。 – ipman