web-dev-qa-db-ja.com

Android View.scrollTo(x、y)はどこにスクロールしますか?

scrollTo(int x, int y) は言う:

xスクロールするx位置

yスクロールするy位置

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

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

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

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

25
slybloty

広範囲にわたる調査とテストの結果、私はようやく scrollTo() がどのように機能するかを理解しました。

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

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

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

添付画像は View のグラフィック表現とビットマップ画像の配置を示しています。

Graphical representation of the relationship between the image and the view.

65
slybloty

から getX()

このビューの視覚的なx位置(ピクセル単位)。これは、translationXプロパティと現在の左のプロパティに相当します。

getY()の場合、上からです。したがって、(0,0)は左上です。

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

1
bigstones