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

实现起来也很简单,通过属性动画和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 C2039: “addTextureMesh”: 不是“pcl::visualization::PCLVisualizer”的成员

    error C2039: "addTextureMesh": 不是"pcl::visualization::PCLVisualizer"的成员 PCL 1.6 ...

  2. vue + eCharts 实现图表展示

    一.首先安装 eCharts 依赖 npm install echarts -S 二.main.js 引入 eCharts 依赖 2.1)在 main.js 中引入 import echarts fr ...

  3. .Net Core 扩展使用Refit

    .Net Core 扩展使用Refit 标签(空格分隔): 未分类 在.net core 2.1当中,目前可以是用HttpClientFactory进行Http的调用,它的使用方法我不再多说,具体参见 ...

  4. javascript不用正则验证输入的字符串是否为空(包含空格)

    在项目中需要验证输入的字符串是否为空,包括空格,不太喜欢使用正则,所以就想到了js的indexOf函数,indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果要检索的字符串值没 ...

  5. C# 、.NET、ASP.NET MVC积累

    2016-10-27 给视图中的select赋值: 控制器: public ActionResult Add() { List<SelectListItem> ClassName = ne ...

  6. [CentOS7] gzip, bzip2, xz 压缩与解压缩

    声明:本文主要总结自:鸟哥的Linux私房菜-第八章.檔案與檔案系統的壓縮,打包與備份,如有侵权,请通知博主 gzip命令: 选项参数: -c :将压缩后的数据显示到屏幕上,可以用于重定向: -d : ...

  7. 网络请求返回HTTP状态码(404,400,500)

    HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...

  8. 第三方登录---微信(使用laravel插件)

    转发: https://www.jianshu.com/p/7be757655814 TP框架: http://www.php.cn/php-weizijiaocheng-363509.html

  9. 接水果(fruit)——整体二分+扫描线

    题目 [题目描述] 风见幽香非常喜欢玩一个叫做 osu! 的游戏,其中她最喜欢玩的模式就是接水果.由于她已经 DT FC 了 The big black,她觉得这个游戏太简单了,于是发明了一个更加难的 ...

  10. Unity---遇到的一些坑和解决方案

    目录 1.在UGUI中的物体顺时针旋转Z是负的.(和正常3D中是相反的) 2.MoveTowards()+Vector3.Distance()控制物体的移动 3.trtransform.SetPare ...