Android Listview 滑动时置顶悬浮效果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwdlss/article/details/50395513

        类似很多 美团 淘宝之类的 滑动之后有部分布局会悬浮置顶的效果。在这里利用listview 简单实现一下:


一、 主布局文件 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- 标题栏 -->
    <include layout="@layout/top_title"/>
 
    <FrameLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ListView 
	       android:id="@+id/lv"
	       android:layout_width="match_parent"
	       android:layout_height="match_parent" />
       
       <!-- 浮动布局 -->
        <LinearLayout 
            android:id="@+id/ll_floating"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="gone" >
            
            <include layout="@layout/listview_floating"/>
            
        </LinearLayout>
        
    </FrameLayout>

</LinearLayout>


二、其他的布局文件都是很简单一张图片:




三、 MainActivity :


public class MainActivity extends Activity {
	
	ListView lv;
	LinearLayout ll_floating;
	String[] listDatas = new String[50];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        for(int i=0;i<listDatas.length;i++){
        	listDatas[i] = "邓肯和波波--" + i;
        }
        
        ll_floating = (LinearLayout) findViewById(R.id.ll_floating);
        lv = (ListView) findViewById(R.id.lv); 
        lv.addHeaderView(View.inflate(this, R.layout.listview_header, null));//头部内容
        lv.addHeaderView(View.inflate(this, R.layout.listview_floating, null));//ListView条目中的悬浮部分 添加到头部
        lv.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, listDatas));
        //listview 滑动监听
        lv.setOnScrollListener(new OnScrollListener() {

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {

			}

			@Override
			public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
				if (firstVisibleItem >= 1) {
					ll_floating.setVisibility(View.VISIBLE);
				} else {
					ll_floating.setVisibility(View.GONE);
				}
			}
		});
    }

}


四 、效果图:


 首先是原图:






然后是滑动之后的效果图:








五、 Demo 下载:点我



猜你喜欢

转载自blog.csdn.net/wwdlss/article/details/50395513
今日推荐