android搜索框上下滑动变色效果

 更新时间:2016年11月30日 15:58:44   作者:ZhengJiaoCsdn  
这篇文章主要为大家详细介绍了android实现搜索框上下滑动透明度改变的效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

搜索框上下滑动变透明度是现在APP中很常见的效果,先看看效果:


首先来看下布局骨架:

<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" 
 tools:context="www.sf.com.searchframe.MainActivity"> 
 
 <ListView 
 android:id="@+id/listview" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" /> 
 
 <!--搜索框--> 
 <LinearLayout 
 android:id="@+id/ll_search" 
 android:layout_width="match_parent" 
 android:layout_height="50dp" 
 android:background="#00ab95" 
 android:orientation="horizontal"> 
 ...... 
 </LinearLayout> 
 
</RelativeLayout> 

整体就是一个相对布局,搜索框直接覆盖在listview上面,效果图最上方的图片是listview的头布局;
这个效果主要用到listview的滑动监听;
在listview滑动的时候不停的获取,imageview距离屏幕顶部的距离;
然后获取到imageview本身的高度;
通过这两个值判断imageview是否滑出屏幕,根据不同情况设置搜索框的透明度;

mListView.setOnScrollListener(new AbsListView.OnScrollListener() { 
  
  //监听滑动状态的改变 
  public void onScrollStateChanged(AbsListView view, int scrollState) { 
  } 
 
  //用于监听ListView屏幕滚动 
  public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
 
  int[] ints = new int[2]; 
  mImage.getLocationOnScreen(ints); 
  /** 
   * mImage距离屏幕顶部的距离(图片顶部在屏幕最上面,向上滑动为负数,所以取反) 
   * 如果不隐藏状态栏,需要加上状态栏的高度;隐藏状态栏就不用加了; 
   */ 
  int scrollY = -ints[1]+statusHeight; 
 
  //mImage这个view的高度 
  int imageHeight = mImage.getHeight(); 
 
  if (mImage != null && imageHeight > 0) { 
   //如果“图片”没有向上滑动,设置为全透明 
   if (scrollY < 0) { 
   llSearch.getBackground().setAlpha(0); 
   } else { 
   //“图片”已经滑动,而且还没有全部滑出屏幕,根据滑出高度的比例设置透明度的比例 
   if (scrollY < imageHeight) { 
    int progress = (int) (new Float(scrollY) / new Float(imageHeight) * 255);//255 
    llSearch.getBackground().setAlpha(progress); 
   } else { 
    //“图片”全部滑出屏幕的时候,设为完全不透明 
    llSearch.getBackground().setAlpha(255); 
   } 
   } 
  } 
 
  } 
 }); 

源码下载:http://xiazai.jb51.net/201611/yuanma/AndroidSearch(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android Studio下Flutter环境搭建图文教程

    Android Studio下Flutter环境搭建图文教程

    这篇文章主要为大家详细介绍了Android Studio下Flutter环境搭建图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Android PC端用ADB抓取指定应用日志实现步骤

    Android PC端用ADB抓取指定应用日志实现步骤

    这篇文章主要介绍了Android PC端用ADB抓取指定应用日志实现步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Android自带API实现分享功能

    Android自带API实现分享功能

    这篇文章主要为大家详细介绍了Android自带API实现分享功能,实现文字和图片的分享,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 如何自己实现Android View Touch事件分发流程

    如何自己实现Android View Touch事件分发流程

    这篇文章主要介绍了如何自己实现Android View Touch事件分发流程,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • Android的ImageButton当显示Drawable图片时就不显示文字

    Android的ImageButton当显示Drawable图片时就不显示文字

    Android提供的ImageButton当显示Drawable图片时就不会再显示文字了,下面与大家分享下3种解决方法,不会的朋友可以了解下哈
    2013-06-06
  • Flutter 侧滑栏及城市选择UI的实现方法

    Flutter 侧滑栏及城市选择UI的实现方法

    这篇文章主要介绍了Flutter 侧滑栏及城市选择UI的实现,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • android自定义view用path画长方形

    android自定义view用path画长方形

    这篇文章主要为大家详细介绍了android自定义view用path画长方形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Android dip,px,pt,sp 的区别详解

    Android dip,px,pt,sp 的区别详解

    本篇文章是对Android中dip,px,pt,sp的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Flutter 利用CustomScrollView实现滑动效果

    Flutter 利用CustomScrollView实现滑动效果

    我们可以使用ListView将几个GridView组合在一起实现了不同可滑动组件的粘合,但是这里必须要设置禁止 GridView 的滑动,防止多个滑动组件的冲突。这种方式写起来不太方便,事实上 Flutter 提供了 CustomScrollView 来粘合多个滑动组件,并且可以实现更有趣的滑动效果。
    2021-06-06
  • Android加载大分辨率图片到手机内存中的实例方法

    Android加载大分辨率图片到手机内存中的实例方法

    有些图片的分辨率比较高,把它直接加载到手机内存中之后,会导致堆内存溢出的问题,下面就讲解一下Android的堆内存以及如何在Android应用中加载一个高分辨率的图片的方法
    2013-11-11

最新评论