4

LayerDrawable を使用して、大きなビットマップ イメージ上に小さなドット ビットマップ (「ホットスポット」) を動的に配置しています。インデックス 0 のレイヤーには大きな画像が含まれています。画像上のドッ​​トの位置は、大きな画像のパーセンテージで指定されています。たとえば、大きなベース イメージの左から 50%、上から 75% のホットスポットがあるとします。画像の正しい部分にドットを配置するために、使用しています

setLayerInset(layer, leftOffset, topOffset, rightOffset, bottomOffset)

LayerDrawable を含む ImageView の幅と高さに基づいてオフセットを計算します。計算が正しく、正しい高さと幅が取得されており、ドットが正しく表示されることを期待していますが、そうではありません。点が Y 軸に沿って歪んでいて、その位置が正しくありません (高すぎて左にずれすぎています)。誰かが同様の問題に遭遇し、解決策を見つけましたか?

4

1 に答える 1

12

私はこれに1日半を費やし、数字を理解しようとしました.これが私が見つけたものです:

私が扱っている状況では、最初のレイヤーに BitmapDrawable が含まれており、後続のレイヤーのインセット、呼び出しのオフセットを設定しています:

setLayerInset(レイヤー、leftOffset、topOffset、rightOffset、bottomOffset)

これらの寸法が DrawableLayer が配置されているビューよりも大きい場合でも、最初のレイヤーのビットマップの寸法に相対的です(たとえば、ビットマップがビューによって自動的に再寸法付けされている場合)。

奇妙で予想外ですが、本当です。これが誰かの時間を節約することを願っています。

于 2013-03-22T11:10:21.893 に答える