文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 05:42

关注

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消失页面导航栏的渐变出现和隐藏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:android自定义进度条渐变色View的实例代码Android ScrollView滑动实现仿QQ空间标题栏渐变Android中Toolbar随着ScrollView滑动透明度渐变效果实现Android ListView滑动改变标题栏背景渐变效果Android UI设计系列之自定义ListView仿QQ空间阻尼下拉刷新和渐变菜单栏效果(8)Android自定义渐变式炫酷ListView下拉刷新动画Android Textview实现颜色渐变滚动效果Android中recyclerView底部添加透明渐变效果Android自定义View实现渐变色进度条Android自定义view渐变圆形动画


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯