在做项目时想增加点动感,于是就有如下效果:

实现起来也很简单,通过属性动画和recyclerview 滑动结合就很好实现了。

通过给recycleview添加一个滑动监听:通过滚动的差值来处理动画

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > ){
hidenFabAnim();
}else{
showFabAnim();
}
}
});

两个动画如下:

/**
* 动画隐藏浮动按钮
*/
private void hidenFabAnim() {
if (!isFabAnimg && mActionButton != null && mActionButton.getVisibility() == View.VISIBLE) {
Animator animator = ObjectAnimator.ofFloat(mActionButton, "translationY", 0f, 100f);
animator.setDuration();
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
isFabAnimg = true;
}
@Override
public void onAnimationEnd(Animator animation) {
isFabAnimg = false;
mActionButton.setVisibility(View.GONE);
} @Override
public void onAnimationCancel(Animator animation) {
isFabAnimg = false;
} @Override
public void onAnimationRepeat(Animator animation) { }
});
animator.start();
}
} /**
* 动画显示浮动按钮
*/
private void showFabAnim(){
if (mActionButton != null && !isFabAnimg && mActionButton.getVisibility() == View.GONE) {
Animator animator = ObjectAnimator.ofFloat(mActionButton,"translationY",100f,0f);
animator.setDuration();
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
isFabAnimg = true;
} @Override
public void onAnimationEnd(Animator animation) {
isFabAnimg = false;
} @Override
public void onAnimationCancel(Animator animation) {
isFabAnimg = false;
} @Override
public void onAnimationRepeat(Animator animation) { }
});
mActionButton.setVisibility(View.VISIBLE);
animator.start();
}
}

动画中给定了移出屏幕和显示在屏幕的距离是100,这个值并不是那么确定性,项目中需要通过屏幕密度来算这个值的大小,以便适应更好的滑动效果;定义了个

isFabAnimg 变量,用来明确动画的状态,避免了重复执行显示或者隐藏的动画。

可见android中要实现某些小效果还是非常的方便的

Android 浮动按钮的伸缩效果的更多相关文章

  1. Android 浮动按钮+上滑隐藏按钮+下滑显示按钮

    1.效果演示 1.1.关注这个红色的浮动按钮 . 可以看到,上滑的时候浮动按钮消失,因为用户迫切想知道下面的东西,而不是回到顶部. 当下滑的时候,用户想回到原来的位置,就可以点击浮动按钮,快速回到顶部 ...

  2. [android] 切换按钮-自定义控件-拖动效果

    重写View的onTouchEvent()方法,传递进来MotionEvent对象 调用MotionEvent对象的getAction()方法,获取当前动作 switch判断一下当前动作 事件为Mot ...

  3. Android实现按钮点击效果(第一次点击变色,第二次恢复)

    1.首先创建一个按钮 <Button android:id="@+id/click" android:layout_width="fill_parent" ...

  4. Android浮动按钮

    https://www.jianshu.com/p/18cbc862ba7b https://github.com/yhaolpz/FloatWindow 这样就解决了切换 Activity 时悬浮控 ...

  5. Qt浮动按钮的实现(使用窗口背景透明、实现只显示浮动按钮的目的)

    Qt浮动按钮的实现 效果如下: 图3 估计很多做Qt有一定经验的朋友会觉得这个效果不难,但是这是一个需求奇葩的实际业务中做出的效果.笔者会想讲下客户的需求和整体框架的矛盾. 整个项目主要是由Qt搭建的 ...

  6. android 拖拽图片&拖动浮动按钮到处跑

    来自老外: 拖拽图片效果 方法一: 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  7. android 按钮点击效果实现

    在其他人的博客里看到其实实现按钮点击效果的方法有很多,这里提到的只是其中一个办法 图片素材(我自己用截图截的,可以自己搞) 放到mipmap目录下(studio是在这个目录下 , eclipse 直接 ...

  8. 可折叠的ToolBar+抽屉菜单NavigationView+浮动按钮FloatButton

    使用Material Design风格的ToolBar和抽屉导航 先看个简单的运行效果 主要记录下布局的写法 1 用到的Google Design依赖和V7包依赖 compile 'com.andro ...

  9. 50个Android开发人员必备UI效果源码[转载]

    50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...

随机推荐

  1. error C2144: 语法错误:“int”的前面应有“;”

    error C2144: 语法错误:"int"的前面应有";" C++- error C2144 syntax error : 'int' should be ...

  2. C# 写 LeetCode easy #20 Valid Parentheses

    20.Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', ...

  3. 【并发编程】Future模式添加Callback及Promise 模式

    Future Future是Java5增加的类,它用来描述一个异步计算的结果.你可以使用 isDone 方法检查计算是否完成,或者使用 get 方法阻塞住调用线程,直到计算完成返回结果.你也可以使用  ...

  4. php soap连接https的wsdl报错SOAP-ERROR: Parsing WSDL:Couldn't load from

    转发:https://blog.csdn.net/keyunq/article/details/51804728 SOAP-ERROR: Parsing WSDL:Couldn’t load from ...

  5. vimtutor总结

    $vimtutor ================================================================================ W e l c o ...

  6. 浅谈JavaScript--this指向

    js中this的值取决于调用的模式 方法调用模式 var student={ name:"adoctors", showThis:function(){ console.log(t ...

  7. PAT L3-010【完全二叉树】

    静态建树判一下1-n是不是为空就好了,如果有空的  就说明不是complete binary tree (和线段树建树差不多啊)Left=2*root:Right=2*root+1 #include ...

  8. cookie中存取中文字符

    1.存入中文: Cookie c = new Cookie("username", java.net.URLEncoder.encode(name,"utf-8" ...

  9. JSP,EL和JSTL

    JSP,EL和JSTL 内容待添加...

  10. Git练习3 远程库分支 idea中状态条显示当前分支