すべてのビューを保持するLinearLayoutを含むHorizontalScrollViewがあります。私は、LinearLayoutにImageViewとTextViewを含む約20のRelativeLayoutを追加します。 ImageViewが画面上にある場合(ImageViewにスクロールするとき)にのみ画像をロードしたいと思います。Androidは、horizontalScrollViewで表示される画像のみをダウンロードします。
getHitRect()
を使用するには、this postを試してみましたが、サムネイルのRect(境界)は常に0、0-0、0となり、結果としてfalseが返されます。私は間違って何をしていますか?
thumbnailLayout
がHorizontalScrollView
thumbnailScroll
内部の私のLinearLayout私HorizontalScrollViewある
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(TAG, "running");
for (int i = 0; i < thumbnailLayout.getChildCount(); i++) {
RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i);
ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
if (thumbnailIsOnScreen(thumbnail)) {
Log.e(TAG, items.get(i).getTitle() + " has downloaded");
app.setImage(items.get(i).getThumbnailSmall(), thumbnail);
}
}
}
});
private boolean thumbnailIsOnScreen(ImageView thumbnail) {
Rect bounds = new Rect();
thumbnail.getHitRect(bounds);
Rect scrollBounds = new Rect(thumbnailScroll.getScrollX(), thumbnailScroll.getScrollY(),
thumbnailScroll.getScrollX() + thumbnailScroll.getWidth(), thumbnailScroll.getScrollY()
+ thumbnailScroll.getHeight());
return Rect.intersects(scrollBounds, bounds);
}
編集 である私はTreeObserverを使用してTREDとthumbailsが画面上にあるかどうかを確認するために私の方法が間違っていることがわかっています。 (私はonPreDrawListener使用しているので?)それはまだすべての画像をつかみ、常にループ
thumbnailLayout.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
Log.e(TAG, "running");
for (int i = 0; i < thumbnailLayout.getChildCount(); i++) {
RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i);
ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
if (thumbnailIsOnScreen(thumbnail)) {
Log.e(TAG, items.get(i).getTitle() + " has downloaded");
app.setImage(items.get(i).getThumbnailSmall(), thumbnail);
}
}
return true;
}
});
あなたはRunnableをどこから呼び出していますか?それはスクロールリスナーにありますか? – dmon
ImageViewsをLinearLayoutに追加した後、Imを実行しています。私はimageViewsがLinearLayoutに追加された後、いくつかの画像をロードする必要があると考えていました。次にスクロールリスナーを使用します – heero
アダプタを使用してギャラリーを使用できますか? – Ethan