我有一个加权布局,其顶部有一个相对布局,ViewPager,后面跟一个LinearLayout和另一个包含List的GridLayout(GridView for Tablet和ListView for Mobile)。我想要做的是在用户滚动列表时平滑地隐藏顶部ViewPager相对布局。我目前有代码在滚动时突然隐藏顶视图。以下是按当前代码。
移动设备的XML(除了ListView是GridView之外,平板电脑布局是相同的):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/liveHome"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight=".60"
android:background="@color/black">
<com.custom.model.LivePagerContainer
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal|center_vertical">
<android.support.v4.view.ViewPager
android:id="@+id/livePager"
android:layout_width="300dip"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical" />
</com.custom.model.LivePagerContainer>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/light_gray"
android:dividerHeight="1dp">
<ImageView
android:layout_width="34dp"
android:layout_height="34dp"
android:contentDescription="@string/image"
android:cropToPadding="true"
android:maxHeight="24dp"
android:padding="5dp"
android:scaleType="fitXY"
android:src="@drawable/image" />
<TextView
android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="@string/string"
android:textColor="@color/black"
android:textSize="16sp"
android:layout_gravity="center_vertical" />
</LinearLayout>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight=".40">
<ListView
android:id="@+id/ListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@color/light_gray"
android:dividerHeight="1dp" >
</ListView>
</LinearLayout>
隐藏/动画的当前代码:
private AbsListView listView;
....
listView.setOnScrollListener(new OnScrollListener(){
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view,
int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
RelativeLayout live = (RelativeLayout) getView().findViewById(R.id.liveHome);
if(firstVisibleItem >2)
{
TranslateAnimation animate = new TranslateAnimation(0,0,0,-live.getHeight());
animate.setDuration(500);
animate.setFillAfter(true);
live.startAnimation(animate);
live.setVisibility(View.GONE);
}
else
{
live.setVisibility(View.VISIBLE);
}
}
});
问题是当前代码(使用setVisibility()隐藏&#34; liveHome&#34;相对布局正确)是非常突然的。当我滚动列表视图时,我想让它平滑地滑出屏幕。我也试过添加动画。 onScroll&#34;中的动画代码移动&#34;屏幕上的内容,但我的顶部留空空间(直到setVisibility(View.GONE)突然使空格消失)。
我有办法顺利隐藏RelativeLayout吗?任何帮助将不胜感激。
注意:我在我的代码中使用AbsListView,因为我根据我的设备(手机与平板电脑)动态使用ListView或Gridview,因此我无法使用ListView的addHeaderView。