android仿IOS,滑动隐藏底部ScrollView
在我们开发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相关推荐
- Android仿IOS滑动关机-自定义view系列(6)
Android仿IOS滑动关机-自定义view系列 功能简介 GIf演示 主要实现步骤-具体内容看github项目里的代码 Android技术生活交流 更多其他页面-自定义View-实用功能合集:点击 ...
- android仿苹果滑动,Android 仿Ios 滑动返回上一目录
IMG_0026.JPGSwipeBackLayout是一个在Android平台上实现了Activity滑动返回的库. 实现了左,右,上,下四种手势返回的功能,在ios里滑动返回是系统自带可以配置的功 ...
- android仿ios滑动解锁,Android自定义绘制:Shader - 模仿iOS滑动解锁
拖动进度条的时候,文字上有一坨类似光照的东西,闪闪的飘过去,类似 iOS 系统的 "滑动来解锁", 通过这篇文章介绍的 Shader ,可以很轻松的实现这种效果- 一.Shade ...
- php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果
Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...
- android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...
Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...
- android滑动菜单图标,Android实现简单底部导航栏 Android仿微信滑动切换效果
Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...
- android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义view配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...
- android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout
Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout 前言 IOS 拖拽回弹给用户的体验不得不赞然后 Android 原生的 API 各种不支持, 于是乎出现的很多仿 IO ...
- android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...
- android 按钮回弹效果,Android仿IOS回弹效果 支持任何控件
本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...
最新文章
- C语言的单链表实现队列
- 机器学习常见的挑战有哪些?
- android md风格Switch,带有图标动画和颜色转换的Switch – material...
- cortex m3 gcc项目_广东省住建厅党组书记赵坤到公司陆丰市污水PPP项目实地调研...
- SAP Retail MM42不能修改物料的物料组
- 重磅 | 2017年全球最聪明公司排行榜TOP50,哪9家中国公司上榜?
- CRMEB移动端前端目录结构
- Day07 - Ruby比一比:Symbol符号与String字串
- ANSIBLE---变量
- 龙将加速浏览器_360安全浏览器正式进军政企市场 积极适配中国芯
- 基于DHT网络的BT磁力链蜘蛛源码
- Adobe Acrobat如何快速将PDF文档的书签修改为“承前缩放”——PDF增效插件AutoBookmark
- Kindle for PC: 优雅的 PDF 阅读器工具
- c语言运算优先级口诀简单,C语言运算符优先级和口诀
- centos7搭建apache服务器
- 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
- 2021年真正还能够用的一键制作词云图网站
- js 获取元素的html代码
- app端-留存分析-周留存率报表开发
- 最近写收缩标题栏遇到的一个问题 requestLayout() improperly called by android.support.design.widget.CollapsingToolba