Android开发之ListView的head消失页面导航栏的渐变出现和隐藏

1.Fragment页面xml布局:

<RelativeLayout 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" xmlns:ptr="http://schemas.android.com/apk/res-auto" tools:context=".fragment.home.HomeStoreFragment" > <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/lv_home_store_list" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" /> <!--top 搜索栏--> <LinearLayout android:id="@+id/ll_top_search" android:layout_width="match_parent" android:layout_height="60dp" android:background="@color/zuti" android:visibility="invisible" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:background="@drawable/shape_edit_cornor" android:gravity="center" > <ImageView android:id="@+id/iv_search_icon" android:layout_width="30dp" android:layout_height="30dp" android:src="@drawable/icon_navbar_search" android:layout_marginRight="5dp" /> <EditText android:id="@+id/et_store_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="输入商家或商品名" android:textColorHint="@color/shenhui" android:background="@null" /> </LinearLayout> </LinearLayout> </RelativeLayout>

2.主要代码:

private boolean isFlingScroll; private View headView; private PullToRefreshListView lvHomeStore; initView(){ lvHomeStore = (PullToRefreshListView) view.findViewById(R.id.lv_home_store_list); lvHomeStore.setMode(PullToRefreshBase.Mode.BOTH); ListView listView = lvHomeStore.getRefreshableView(); headView = initHeadView(); AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT);//这句要加上去 headView.setLayoutParams(layoutParams); listView.addHeaderView(headView); lvHomeStore.setAdapter(adapter); lvHomeStore.setOnScrollListener(this); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == SCROLL_STATE_FLING) {//手指离开手机界面,Listview还在滑动 isFlingScroll = true; } else if (scrollState == SCROLL_STATE_TOUCH_SCROLL) {//手指在界面上滚动的情况 isFlingScroll = false; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { showSearchBarShow(); } private void showSearchBarShow() { int headBottomToParentTop = headView.getHeight() + headView.getTop(); Log.d("homeStore", "headView.getHeight(): " + headView.getHeight()); Log.d("homeStore", "headView.getTop(): " + headView.getTop()); Log.d("homeStore", "headBottomToParentTop: " + headBottomToParentTop); if (!isFlingScroll) {//手指在界面滑动的情况 int height = layoutSearch.getHeight(); Log.d("homeStore", "height: " + height); if (headBottomToParentTop > height) { layoutSearch.setVisibility(View.INVISIBLE); } else if (headBottomToParentTop <= height) {//缓慢滑动,这部分代码工作正常,快速滑动,里面的数据就跟不上节奏了。 float alpha = (height - headBottomToParentTop) * 1f / height; Log.d("homeStore", "alpha: " + alpha); layoutSearch.setAlpha(alpha); layoutSearch.setVisibility(View.VISIBLE); } if (!headView.isShown()){//解决快速滑动,上部分代码不能正常工作的问题。 layoutSearch.setAlpha(1); layoutSearch.setVisibility(View.VISIBLE); } } else {//手指离开,listview还在滑动,一般情况是列表快速滑动,这种情况直接设置导航栏的可见性 if (!headView.isShown()) { if (!layoutSearch.isShown()){ layoutSearch.setVisibility(View.VISIBLE); layoutSearch.setAlpha(1); } } else { if (layoutSearch.isShown()){ layoutSearch.setVisibility(View.INVISIBLE); } } } }

以上所述是小编给大家介绍的Android开发之ListView的head消失页面导航栏的渐变出现和隐藏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-12-23 09:39:57

Android开发之ListView的head消失页面导航栏的渐变出现和隐藏的相关文章

Android开发之ListView的head消失页面导航栏的渐变出现和隐藏_Android

1.Fragment页面xml布局: <RelativeLayout 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开发之ListView列表刷新和加载更多实现方法_Android

本文实例讲述了Android开发之ListView列表刷新和加载更多实现方法.分享给大家供大家参考.具体如下: 上下拉实现刷新和加载更多的ListView,如下: package com.sin.android.ui; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import andro

Android开发之ListView列表刷新和加载更多实现方法

本文实例讲述了Android开发之ListView列表刷新和加载更多实现方法.分享给大家供大家参考.具体如下: 上下拉实现刷新和加载更多的ListView,如下: package com.sin.android.ui; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import andro

Android开发之ListView实现Item局部刷新_Android

对于android中的ListView刷新机制,大多数的程序员都是很熟悉的,修改或者添加adapter中的数据源之后,然后调用notifyDataSetChanged()刷新ListView.在这种模式下,我们会在getView中,根据不同的数据源,让控件显示不同的内容.这种模式是最常见的刷新模式,当我们来回滑动ListView的时候,调用adapter的getView方法,然后listview对adapter返回的View进行绘制.这种模式下,View的显示内容或状态都记录在adapter里面

android开发之listView组件用法实例简析

本文实例讲述了android开发之listView组件用法.分享给大家供大家参考,具体如下: 关于Android ListView组件中android:drawSelectorOnTop含义 android:drawSelectorOnTop="true"  点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到. android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但

Android开发之ListView实现Item局部刷新

对于android中的ListView刷新机制,大多数的程序员都是很熟悉的,修改或者添加adapter中的数据源之后,然后调用notifyDataSetChanged()刷新ListView.在这种模式下,我们会在getView中,根据不同的数据源,让控件显示不同的内容.这种模式是最常见的刷新模式,当我们来回滑动ListView的时候,调用adapter的getView方法,然后listview对adapter返回的View进行绘制.这种模式下,View的显示内容或状态都记录在adapter里面

Android开发之ListView、GridView 详解及示例代码_Android

    ListView与GridView是Android开发中的常用控件,它们和Adapter配合使用能够实现很多界面效果.下面分别以实例说明ListView.GridView的用法.        1.ListView的Android开发实例        ListView 是android开发中最常用的控件之一,一般构成列表包括三个元素,ListView:用来展示列表的视图.Adapter:数据与视图连接的桥梁.Data:具体的数据包括字符串 .图片或者控件.        适配器一般有以

Android开发之ListView,加入CheckBox(复选框),实现选择列表

http://blog.csdn.net/ahutzh/article/details/6911095 Android ListView没行加入CheckBox,实现选择列表,既可点击复选框进行选中,也可以点击list一行进行选中,效果图如下: 下面贴下主要代码的实现: 对于列表中复选框,我们需要在复选框的状态发生变化时,保存复选框的状态,不然在拖动列表过程中,会丢失复选框的状态. 在这里我们采用下面方式保存: [java] view plaincopy public class Person 

Android开发之ListView实现不同品种分类分隔栏的效果(非ExpandableListView实现)

我们有时候会遇到这么一个情况.就是我在一个ListView里面需要显示的东西其实是有种类之分的.比如我要分冬天,夏天,秋天,春天,然后在这每个季节下面再去加载各自的条目数据.还有,比如我们的通讯录,我们需要按A,B,C这样的字母顺序分类然后显示.这个怎么实现呢? 下面我们不用ExpandableListView,而是只用ListView来实现这一显示效果. MainActivity.java [java] view plaincopy package com.xzq.listviewadapte