我正在尝试实现关于滚动列表视图的隐藏视图。
喜欢facebook app: -
1.)当列表视图向下滚动时,底部的蓝色布局(状态,照片,CheckIn)开始相对于滚动列表视图的数量向上滑动,最终变为可见
2.)当列表视图向上滚动时,底部布局向下滑动,最后不可见。
3.)当列表同时上下滚动时,布局也相对于它向下和向下滑动
现在,我正在努力通过翻译实现它,但结果并不完全相同: -
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
final int currentFirstVisibleItem = view.getFirstVisiblePosition();
if (currentFirstVisibleItem > mLastFirstVisibleItem) {
// Scroll down
count = count + 20;
} else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
// Scroll up
count = count - 20;
}
bottom.setTranslationY(count);
mLastFirstVisibleItem = currentFirstVisibleItem;
}
使用此代码,视图会滑动但不平滑。
答案 0 :(得分:0)
我在我的应用程序中做了类似的事情。除了我不滚动底部而是滚动tabhost。也许你可以从这里拿出一些代码给你。
listView.setOnScrollListener(new AbsListView.OnScrollListener()
{
@Override
public void onScrollStateChanged(AbsListView absListView, int i)
{
if (i == SCROLL_STATE_IDLE)
{
mLastScroll = 0;
if (mTabHost.getTranslationY() >= -mTabHost.getHeight() / 2)
mTabHost.animate().translationY(0).start();
else
mTabHost.animate().translationY(-mTabHost.getHeight()).start();
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i2, int i3)
{
if (absListView.getChildCount() <= 0)
return;
View c = absListView.getChildAt(0);
int scrolly = -c.getTop() + absListView.getFirstVisiblePosition() * c.getHeight();
if (mLastScroll == 0)
mLastScroll = (int)(scrolly + Math.round(mTabHost.getTranslationY() / 0.7));
float dif = 0;
if (mLastScroll - scrolly <= 0)
dif = mLastScroll - scrolly;
else
mLastScroll = scrolly;
if (dif * 0.7 < -mTabHost.getHeight())
{
dif = Math.round(-mTabHost.getHeight() / 0.7);
mLastScroll = (int) Math.round(scrolly - mTabHost.getHeight() / 0.7);
}
mTabHost.setTranslationY(Math.round(dif * 0.7));
}
});