想象一下当屏幕位于var images = [];
function preload() {
for (i = 0; i < arguments.length; i++) {
images[i] = new Image();
images[i].src = preload.arguments[i];
}
}
//-- usage --//
preload(
"http://domain.tld/gallery/image-001.jpg",
"http://domain.tld/gallery/image-002.jpg",
"http://domain.tld/gallery/image-003.jpg"
)
中间时的情况。是否有可能在顶部隐藏部分的像素高度?
可以获得可见屏幕部分的高度:
ScrollView
可以通过获得儿童身高来获得 Rect scrollBounds = new Rect();
mScrollView.getHitRect(scrollBounds);
的身高:
ScrollView
但如何确定隐藏部分的高度?
答案 0 :(得分:1)
mScrollView.getScrollY();
返回此视图的滚动顶部位置,该位置是顶部“隐藏”部分的高度。
答案 1 :(得分:1)
一种解决方案是首先获得设备高度。
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int height = displayMetrics.heightPixels;
然后,获取可见Container的顶部高度。 我们假设您的可见容器是 RelativeLayout ,它在您的Activity类或Fragment类中被引用为 mVisibleConatiner 。
int topHeight = mVisibleConatiner.getTop();
然后,这两者的差异将是你隐藏的部分高度。
int hiddenPartHeightInPx = height - topHeight;
从来没有尝试过,但它应该有用。
答案 2 :(得分:0)
在我的 .xml 文件中,我是这样写的
viewContentView(LinearLayout) -> inside of -> mainScrollView
然后在我的班级里面我这样声明
final LinearLayout viewContentView = findViewById(R.id.viewContentView);
final ScrollView mainScrollView = findViewById(R.id.mainScrollView);
mainScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollY = mainScrollView.getScrollY(); // For ScrollView
int scrollX = mainScrollView.getScrollX(); // For HorizontalScrollView
Log.d("mainScrollView", "mainScrollView x: "+scrollX +" || y: "+scrollY);
Log.d("mainScrollView", "mainScrollView y: "+(viewContentView.getHeight() - mainScrollView.getBottom()));
if(scrollY == 0){ //scroll to TOP
viewpager.setVisibility(View.GONE);
}else if(scrollY == (viewContentView.getHeight() - mainScrollView.getBottom())){ //scroll to Bottom
viewpager.setVisibility(View.VISIBLE);
}
}
});