android 按键上浮动画_android – 浮动动作按钮动画

从@Zielony的回答中,我确切地说到了我想要的地方.

下面是正确应用效果的代码.

scale_fab_in.xml

android:duration="500"

android:fromXScale="0"

android:fromYScale="0"

android:pivotX="50%"

android:pivotY="50%"

android:toXScale="1"

android:toYScale="1"

android:interpolator="@android:interpolator/overshoot"/>

scale_fab_out.xml

android:duration="400"

android:fromXScale="1"

android:fromYScale="1"

android:pivotX="50%"

android:pivotY="50%"

android:toXScale="0"

android:toYScale="0"

android:interpolator="@android:interpolator/overshoot"/>

编辑2016年2月16日 – 另一种方式:

将下面的代码放在您的FAB代码或任何其他视图中.

//global

private static final int FAB_ANIM_DURATION = 200;

public void hide() {

// Only use scale animation if FAB is visible

if (getVisibility() == View.VISIBLE) {

// Pivots indicate where the animation begins from

float pivotX = getPivotX() + getTranslationX();

float pivotY = getPivotY() + getTranslationY();

// Animate FAB shrinking

ScaleAnimation anim = new ScaleAnimation(1, 0, 1, 0, pivotX, pivotY);

anim.setDuration(FAB_ANIM_DURATION);

anim.setInterpolator(getInterpolator());

startAnimation(anim);

}

setVisibility(View.INVISIBLE);

}

public void show() {

show(0, 0);

}

public void show(float translationX, float translationY) {

// Set FAB's translation

setTranslation(translationX, translationY);

// Only use scale animation if FAB is hidden

if (getVisibility() != View.VISIBLE) {

// Pivots indicate where the animation begins from

float pivotX = getPivotX() + translationX;

float pivotY = getPivotY() + translationY;

ScaleAnimation anim;

// If pivots are 0, that means the FAB hasn't been drawn yet so just use the

// center of the FAB

if (pivotX == 0 || pivotY == 0) {

anim = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0.5f);

} else {

anim = new ScaleAnimation(0, 1, 0, 1, pivotX, pivotY);

}

// Animate FAB expanding

anim.setDuration(FAB_ANIM_DURATION);

anim.setInterpolator(getInterpolator());

startAnimation(anim);

}

setVisibility(View.VISIBLE);

}

private void setTranslation(float translationX, float translationY) {

if (Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1) {

animate().setInterpolator(getInterpolator()).setDuration(FAB_ANIM_DURATION)

.translationX(translationX).translationY(translationY);

}

}

private Interpolator getInterpolator() {

return AnimationUtils.loadInterpolator(getContext(), R.interpolator.fab_interpolator);

}

@android:interpolator/decelerate_cubic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试调优篇---未完待续

性能测试调优一:1.首先,看下选测交易的整个走向纯系统内部交易:选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表??该交易走了那几…

mysql连接idea详细教程_idea配置连接数据库的超详细步骤

学习时,使用IDEA的时候,需要连接Database,连接时遇到了一些小问题,下面记录一下操作流程以及遇到的问题的解决方法。一、 连接操作简介:介绍如何创建连接,具体连接某个数据库的操作流程。1.1 创建连接打开i…

redis单节点安装

1、下载 redis :https://redis.io/ redis 提供的是 源码包,需要编译。 2、Linux下安装gcc 和 tcl tcl介绍 命令:yum install gcc tcl 3、将redis的源码包,放到 /usr/local/src 下 tar -zxvf redis-4.0.6.tar.gz 4、安装redi…

Shell编程—企业生产案例

Linux系统Shell编程—企业生产案例(一) 企业数据库可以说是重点保护对象啊,没有之一,数据在当今企业里就是生命线,因此今天就来说一说,如何通过shell脚本来检查或监控MYSQL数据库服务是否正常?&…

ManicTime软件破解

这款软件用来记录电脑上程序的运行时间。方便天天用电脑的查看:今天我的时间都去哪儿了? 专业版不免费,而且需要 67 美元。 免费版和专业版的区别 破解补丁和官方软件下载(截止博文发布,官方最新版本 版本&#xff1…

mysql根据ID的顺序查找_求救:mysql 如何根据给定的 ID顺序查找结果?

各位大神,现在我遇到了一个难题需要你们的帮助。有下面两个表post表:文章表。record表:记录表,用于记录用户阅读顺序。record表 根据用户的阅读文章顺序用一个字段 postid 记录 post 表的主键ID,既 record.postid 的外键为 post.i…

DIY—USB学习板设计以及驱动开发

暑假在Intel OTC做访问学者时,看到公司有两个小巧的USB设备-温度计和LED音乐播放器,用于交大学生的Linux Kernel教学中。但看似简单的这些设备,还是从国外购买而得。因此,从intel回来之后,我就告诉学生能否设计一种USB…

ps -ef |grep

[rootzengmg 6379]# ps -ef | grep redisroot 1978 1 0 09:35 ? 00:00:16 /usr/local/bin/redis-server 127.0.0.1:6379 root 116656 2708 0 15:56 pts/1 00:00:00 grep redis 字段含义如下: UID PID PPID CSTIME…

python入坑指南_Rust入坑指南:万物初始

有没有同学记得我们一起挖了多少个坑?嗯…其实我自己也不记得了,今天我们再来挖一个特殊的坑,这个坑可以说是挖到根源了——元编程。元编程是编程领域的一个重要概念,它允许程序将代码作为数据,在运行时对代码进行修改…

python和noip的区别_【noi与noip的区别】

什么是NOINOI:全国青少年信息学奥林匹克(NOI)是国内包括港澳在内的省级代表队高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。每年经各省选拔产生5名选手(其中一名是女选手),由中国计算机学会在计算机普及较好的城…

gradle和maven区别

原文连接:http://blog.csdn.net/jueane/article/details/50383431 --------------------------------------------- Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产…

iOS开发提问题

1、打造最受企业欢迎的iOS开发者: 一直都存在的问题,什么样的员工最受企业欢迎?一直也有人在努力提升自己,成为受企业欢迎的员工然而,我们应该往方向去提升自己呢?88家知名企业今年来iOS面试题合集&#xf…

maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...

使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴。1、首先在本地maven位置的配置文件setting.xml(没有该文件就新建这个文件)中,添加配置maven仓库的地址。我用的是我的GitHub仓库…

Gradle笔记——Gradle的简介与安装

原文连接:http://blog.csdn.net/maosidiaoxian/article/details/40109337 gradle专栏 ----------------------------------------- Gradle 安装 1,安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JA…

WPF之鼠标滑动切换图片

原文:WPF之鼠标滑动切换图片在网上找了一会儿也没找到我想要的效果,还是自己动手,丰衣足食吧。 需求:当前面板中只显示一张图片,图片栏的下部有用来显示当前图片处于图片队列中的位置的圆球,并且点击下部栏内的圆球可以…

CPU的核心数、线程数的关系和区别

原文地址:http://blog.csdn.net/yu132563/article/details/45222935 ------------------------------------- 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级。CPU从早期的单核,发展到现在的双核…

mysql in 子查询优化_mysql in 子查询 容易优化

mysql in 子查询 简单优化 大数量下,不要使用 in 嵌套子查询,性能很差,很容易卡死。 ? 简单调整方式如下: select uid,nick_name from uc_users where uid in(select fid from uc_follow where uid#uid#) ? 可拆解成&#xff1a…

谷歌浏览器插件入门示例

2019独角兽企业重金招聘Python工程师标准>>> 实现:任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的,可以选中批量下载,获取cookies 是为了方便程序员调试用。 获取cookies: git地址:…

Fiddler中response乱码的解决方案

原文连接:http://blog.csdn.net/quiet_girl/article/details/50577828 ---------------------------------------------------------- 有时候我们看到Response中的HTML是乱码的, 这是因为HTML被压缩了, 我们可以通过两种方法去解压缩。 解决…

线程带来的风险

线程安全性问题 多线程环境下 多个线程共享一个资源对资源进行非原子性操作。 以上三者都存在就会发生线程安全性问题 如文中的卖火车票问题:http://blog.csdn.net/zengmingen/article/details/53217229 原因是:一行java代码转成.class字节码文件后是…