28

scrollTo(int x, int y)言う:

xスクロール先のx位置

yスクロール先のy位置

onScrollChanged(int l, int t, int oldl, int oldt)言う:

l現在の水平スクロールの原点。

t現在の垂直スクロールの原点。

私が知りたいのですが、どこにも見つかりません。x、yはどこにありますか?左上?中心?いくつかのテストを試しましたが、理解できません。

4

2 に答える 2

72

徹底的な調査とテストの結果、scrollTo()がどのように機能するかをようやく理解しました。

(0,0)ビューコンテナの左上隅の座標です。任意のポイントにスクロールすると、ビュー(x,y)の左上隅が座標に配置されます。(x,y)

ビューがビュー自体よりも大きい画像ビットマップを表示している場合は、スクロールしてビューを画像の中央に配置します。このように、画像の左上隅はに、右下隅はに配置されます。画像とビューの幅の差を表します。また、画像とビューの高さの差を表します。(0,0)(-dX/2, -dY/2)(mW - dX/2, mH - dY/2)dXdY

右下隅を表示し、それを通過しないようにするために(右下またはさらに右に)、これは適切な呼び出しです。scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);

添付の画像は、ビューとビットマップの画像の位置をグラフで表したものです。

画像とビューの関係をグラフィカルに表現したもの。

于 2011-10-21T15:39:00.400 に答える
1

差出人getX()

このビューの視覚的なx位置(ピクセル単位)。これは、translationXプロパティに現在のleftプロパティを加えたものと同等です。

それgetY()は上からです。したがって、(0,0)は左上です。

scrollTo()プロパティが「最近」であり、しばらくコーディングしていないため、プロパティを考慮に入れるかどうかはわかりませんがtranslationX、きっとそうなると思います。

于 2011-10-14T20:46:51.257 に答える