当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发之ListView的head消失页面导航栏的渐变出现和隐藏

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

安思琳,乡村旅游,叔本华论说文集

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消失页面导航栏的渐变出现和隐藏,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网