android仿IOS,滑动隐藏底部ScrollView
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android仿IOS,滑动隐藏底部ScrollView,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3664字,纯文字阅读大概需要6分钟。
内容图文
在我们开发android app时,会有非常多效果都须要模仿IOS,近期在做一个页面时,当中用到了 ScrollView,但要做成IOS那种在ScrollView滑动时。浮在ScrollView的功能button要隐藏,当滑动结束后,功能button又要显示出来。效果例如以下图所看到的:
gif实在是不好搞,所以仅仅能截个静态图来表示一下,当ScrollView滑动时。浮在最以下的button会以动画的形式隐藏。当停止滑动时,又会已动画的形式回到原位置。
思路:当监听到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); } @Override protected void onFinishInflate() { if (getChildCount() > 0) { contentView = getChildAt(0); } } @Override public 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() { @Override public void onAnimationUpdate(ValueAnimator animation) { animationView.setTranslationY((Float) animation.getAnimatedValue()); } }); hiddenAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { startApperaAnimation(); } @Override public void onAnimationStart(Animator animation) { isHidding = true; } }); apperaAnim = ValueAnimator.ofFloat(animationView.getHeight(), 0); apperaAnim.setDuration(500); apperaAnim.setTarget(animationView); apperaAnim.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { animationView.setTranslationY((Float) animation.getAnimatedValue()); } }); apperaAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { isHidding = false; } @Override public 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); } } }最后:主要就使用用了一个属性动画。属性动画还是非常重要的,一定的学会并熟练应用。
原文:http://www.cnblogs.com/jzdwajue/p/6781306.html
内容总结
以上是互联网集市为您收集整理的android仿IOS,滑动隐藏底部ScrollView全部内容,希望文章能够帮你解决android仿IOS,滑动隐藏底部ScrollView所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。