在我们开发android app时,会有很多效果都需要模仿IOS,最近在做一个页面时,其中用到了 ScrollView,但要做成IOS那种在ScrollView滑动时,浮在ScrollView的功能按钮要隐藏,当滑动结束后,功能按钮又要显示出来。效果如下图所示:

gif实在是不好搞,所以只能截个静态图来表示一下,当ScrollView滑动时,浮在最下面的按钮会以动画的形式隐藏,当停止滑动时,又会已动画的形式回到原位置。

思路:当监听到ScrollView滑动时,播放属性动画隐藏,当滑动结束的时候播放相反的动画,使View回到原位置。

代码如下:

package view;
/*********************************************************** @文件名称:CustomScrollView.java* @文件作者:rzq* @创建时间:2015年7月7日 下午2:20:16* @文件描述:滑动隐藏ScrollView* @修改历史:2015年7月7日创建初始版本**********************************************************/
public class CustomScrollView extends ScrollView
{/*** UI*/private View contentView;/*** data*/private ValueAnimator apperaAnim;private ValueAnimator hiddenAnim;private int downScrollY;private int moveScrollY;private boolean isHidding;public CustomScrollView(Context context, AttributeSet attrs){super(context, attrs);}@Overrideprotected void onFinishInflate(){if (getChildCount() > 0){contentView = getChildAt(0);}}@Overridepublic boolean onTouchEvent(MotionEvent ev){switch (ev.getAction()){case MotionEvent.ACTION_DOWN:downScrollY = getScrollY();break;case MotionEvent.ACTION_MOVE:moveScrollY = getScrollY();if (moveScrollY != downScrollY){startHiddenAnimation();}break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:moveScrollY = 0;downScrollY = 0;break;}return super.onTouchEvent(ev);}public void setAnimationView(final View animationView){/*** 创建动画*/hiddenAnim = ValueAnimator.ofFloat(0, animationView.getHeight());hiddenAnim.setDuration(500);hiddenAnim.setTarget(animationView);hiddenAnim.addUpdateListener(new AnimatorUpdateListener(){@Overridepublic void onAnimationUpdate(ValueAnimator animation){animationView.setTranslationY((Float) animation.getAnimatedValue());}});hiddenAnim.addListener(new AnimatorListenerAdapter(){@Overridepublic void onAnimationEnd(Animator animation){startApperaAnimation();}@Overridepublic void onAnimationStart(Animator animation){isHidding = true;}});apperaAnim = ValueAnimator.ofFloat(animationView.getHeight(), 0);apperaAnim.setDuration(500);apperaAnim.setTarget(animationView);apperaAnim.addUpdateListener(new AnimatorUpdateListener(){@Overridepublic void onAnimationUpdate(ValueAnimator animation){animationView.setTranslationY((Float) animation.getAnimatedValue());}});apperaAnim.addListener(new AnimatorListenerAdapter(){@Overridepublic void onAnimationEnd(Animator animation){isHidding = false;}@Overridepublic void onAnimationStart(Animator animation){}});}private void startHiddenAnimation(){if (!hiddenAnim.isRunning() && !isHidding){hiddenAnim.start();}}private void startApperaAnimation(){if (!apperaAnim.isRunning()){apperaAnim.start();}}/*** 是否直接滑动到底部*/protected boolean isScrollDown(){return getHeight() + getScrollY() == contentView.getHeight();}/*** 是否直接滑到顶部*/protected boolean isScrollUp(){return getScrollY() == 0;}
}
/**
* 在Activity中使用
*/
public class CustomActivity extends Activity
{
private TextView textView;
private CustomScrollView2 scrollView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_scrollview_layout);
scrollView = (CustomScrollView2) findViewById(R.id.scoll_view);
textView = (TextView) findViewById(R.id.animation_view);
}
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
if (hasFocus)
{
scrollView.setAnimationView(textView);
}
}
}

最后:主要就使用用了一个属性动画,属性动画还是很重要的,一定的学会并熟练应用。

android仿IOS,滑动隐藏底部ScrollView相关推荐

  1. Android仿IOS滑动关机-自定义view系列(6)

    Android仿IOS滑动关机-自定义view系列 功能简介 GIf演示 主要实现步骤-具体内容看github项目里的代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击 ...

  2. android仿苹果滑动,Android 仿Ios 滑动返回上一目录

    IMG_0026.JPGSwipeBackLayout是一个在Android平台上实现了Activity滑动返回的库. 实现了左,右,上,下四种手势返回的功能,在ios里滑动返回是系统自带可以配置的功 ...

  3. android仿ios滑动解锁,Android自定义绘制:Shader - 模仿iOS滑动解锁

    拖动进度条的时候,文字上有一坨类似光照的东西,闪闪的飘过去,类似 iOS 系统的 "滑动来解锁",  通过这篇文章介绍的 Shader ,可以很轻松的实现这种效果- 一.Shade ...

  4. php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  5. android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...

  6. android滑动菜单图标,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  7. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义view配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  8. android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout

    Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout 前言 IOS 拖拽回弹给用户的体验不得不赞然后 Android 原生的 API 各种不支持, 于是乎出现的很多仿 IO ...

  9. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  10. android 按钮回弹效果,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

最新文章

  1. C语言的单链表实现队列
  2. 机器学习常见的挑战有哪些?
  3. android md风格Switch,带有图标动画和颜色转换的Switch – material...
  4. cortex m3 gcc项目_广东省住建厅党组书记赵坤到公司陆丰市污水PPP项目实地调研...
  5. SAP Retail MM42不能修改物料的物料组
  6. 重磅 | 2017年全球最聪明公司排行榜TOP50,哪9家中国公司上榜?
  7. CRMEB移动端前端目录结构
  8. Day07 - Ruby比一比:Symbol符号与String字串
  9. ANSIBLE---变量
  10. 龙将加速浏览器_360安全浏览器正式进军政企市场 积极适配中国芯
  11. 基于DHT网络的BT磁力链蜘蛛源码
  12. Adobe Acrobat如何快速将PDF文档的书签修改为“承前缩放”——PDF增效插件AutoBookmark
  13. Kindle for PC: 优雅的 PDF 阅读器工具
  14. c语言运算优先级口诀简单,C语言运算符优先级和口诀
  15. centos7搭建apache服务器
  16. 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
  17. 2021年真正还能够用的一键制作词云图网站
  18. js 获取元素的html代码
  19. app端-留存分析-周留存率报表开发
  20. 最近写收缩标题栏遇到的一个问题 requestLayout() improperly called by android.support.design.widget.CollapsingToolba

热门文章

  1. JavaWeb:生成简单随机图片验证码返回给客户端
  2. HTML:在HTML前端界面中直接显示代码
  3. HighCharts:为plotLines基准线添加label标签不显示
  4. Swiper:基础学习
  5. oracle union orderby,Oracle中union 和 order by 的联用
  6. mysql中dint_mysql常用操作——数据库和表的操作1(共2页)
  7. Web研发模式演变史
  8. 2020年GitHub上的7个顶级的Java开源目推荐(强烈安利)
  9. 关于如何将DB2中的非空约束删除
  10. ​观点|我离开AI行业的5个理由