Android翻转动画(卡片翻转效果)


前言

=================================================================

最近好友问计蒙翻转动画,恰好在大二那年看Android Api Demo时记了笔记,由此写一篇文章。

需求

=================================================================

屏幕右滑事件触发卡片的翻转效果 ,为了方便,在例子中将右滑事件改成按钮点击事件


老规矩,最后有源码

一、先介绍三个插值器

=========================================================================

LinearInterpolator() 其变化速率恒定

AccelerateInterpolator() 其变化开始速率较慢,后面加速

DecelerateInterpolator() 其变化开始速率较快,后面减速

二、实现步骤

=====================================================================

1.效果图


在这里插入图片描述

2.布局


一个按钮,两个TextView(布局文件在源码部分)

3.逻辑判断(是否隐藏)


final TextView visibletext;

final TextView invisibletext;

//逻辑判断

if (textview1.getVisibility() == View.GONE) {

visibletext = textview2;

invisibletext = textview1;

} else {

invisibletext = textview2;

visibletext = textview1;

}

4.翻转动画


//LinearInterpolator() 其变化速率恒定

ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visibletext, “rotationY”, 0f, 90f);

visToInvis.setDuration(500);

//AccelerateInterpolator() 其变化开始速率较慢,后面加速

visToInvis.setInterpolator(new AccelerateInterpolator());

final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisibletext, “rotationY”,

-90f, 0f);

invisToVis.setDuration(500);

//DecelerateInterpolator() 其变化开始速率较快,后面减速

invisToVis.setInterpolator(new DecelerateInterpolator());

visToInvis.addListener(new AnimatorListenerAdapter() {

@Override

public void onAnimationEnd(Animator anim) {

visibletext.setVisibility(View.GONE);

invisToVis.start();

invisibletext.setVisibility(View.VISIBLE);

}

});

visToInvis.start();

5.bug出现


发现实现后,第一次点击出现bug

在这里插入图片描述

6.bug解决


在找到控件后,默认设置y方向角度

textview2.setRotationY(-90f);

三、源码

===================================================================

MainActivity.java


public class MainActivity extends Activity {

private TextView textview1;

private TextView textview2;

private Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

//bug解决

textview2.setRotationY(-90f);

button.setOnClickListener(new View.OnClickListen
er() {

@Override

public void onClick(View v) {

flipAnimation();

}

});

}

private void initView() {

textview1 = (TextView) findViewById(R.id.textview1);

textview2 = (TextView) findViewById(R.id.textview2);

button = (Button) findViewById(R.id.button);

}

private void flipAnimation() {

final TextView visibletext;

final TextView invisibletext;

//逻辑判断

if (textview1.getVisibility() == View.GONE) {

visibletext = textview2;

invisibletext = textview1;

} else {

invisibletext = textview2;

visibletext = textview1;

}

//LinearInterpolator() 其变化速率恒定

ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visibletext, “rotationY”, 0f, 90f);

visToInvis.setDuration(500);

//AccelerateInterpolator() 其变化开始速率较慢,后面加速

visToInvis.setInterpolator(new AccelerateInterpolator());

final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisibletext, “rotationY”,

-90f, 0f);

invisToVis.setDuration(500);

//DecelerateInterpolator() 其变化开始速率较快,后面减速

invisToVis.setInterpolator(new DecelerateInterpolator());

visToInvis.addListener(new AnimatorListenerAdapter() {

@Override

public void onAnimationEnd(Animator anim) {

visibletext.setVisibility(View.GONE);

invisToVis.start();

invisibletext.setVisibility(View.VISIBLE);

}

});

visToInvis.start();

}

}

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
version=“1.0” encoding=“utf-8”?>

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-s57uCemG-1718994095183)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

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

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

相关文章

PCL 三次样条插值(二维点)

一、简介 在插值计算中,最简单的分段多项式近似应该是分段线性插值,它由连接一组数据点组成,仅仅只需要将这些点一一用直线进行顺序相连即可。不过线性函数插值的缺点也很明显,就是在两个子区间变化的比较突兀,也就是没有可微性(不够光滑)。因此我们需要更为符合物理情况…

C语言小例程

题目&#xff1a;两个乒乓球队进行比赛&#xff0c;各出三人。甲队为a,b,c三人&#xff0c;乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比&#xff0c;c说他不和x,z比&#xff0c;请编程序找出三队赛手的名单。 #include <stdio.h> #in…

Mac OS 如何在命令行下启动Docker

现象 当用 Mac air作为服务器时&#xff0c;远程登录上去后想使用 docker&#xff0c;却报如下错&#xff1a; Cannot connect to the Docker daemon at unix:///Users/aborn/.docker/run/docker.sock. Is the docker daemon running? 原因分析 因为 docker 有一个守护进程…

外包IT运维解决方案

随着企业信息化进程的不断深入&#xff0c;IT系统的复杂性和重要性日益增加。高效的IT运维服务对于保证业务连续性、提升企业竞争力至关重要。外包IT运维解决方案通过专业的服务和技术支持&#xff0c;帮助企业降低运维成本、提高运维效率和服务质量。 本文结合《外包IT运维解…

教育培训机构寒暑假班学校公众号小程序

&#x1f4da;教育培训学校公众号版本&#xff1a;开启学习新纪元&#x1f680; 一、引言&#xff1a;为何教育培训学校需要公众号版本&#xff1f; 随着数字化时代的来临&#xff0c;传统教育培训行业也在不断探索新的服务模式。公众号作为新媒体平台的一种&#xff0c;具有信…

艾多美用“艾”为生命加油,献血活动回顾

用艾为生命加油 6月10日~16日&#xff0c;艾多美中国开启献血周活动&#xff0c;已经陆续收到来自烟台总部、山东、广东、河南、四川、重庆、贵阳&#xff0c;乌鲁木齐&#xff0c;吉林&#xff0c;等地区的艾多美员工、会员、经销商发来的爱心助力&#xff0c;截止到目前&…

ICP、ISP及IAP烧录介绍

文章目录 不同的程序下载方式一、ICP:In-Circuit Programming二、ISP:In-System Programming三、IAP:In-Application ProgrammingIAP方案设计不同的程序下载方式 目前,单片机的程序烧录方式可以分为三种:ICP、ISP、IAP。 ICP:In Circuit Programing,在电路编程; ISP:…

购买服务器,并安装宝塔

前言&#xff1a; 我们在开发项目时&#xff0c;总会遇到一个问题&#xff0c;就是将我们开发好的项目上传的公网中。对于中小型的项目&#xff0c;我们可以通过购买服务器进行项目的上线。 我们的项目一般是部署在Linux环境中。如果你不是专业的运维人员&#xff0c;可能对于…

考前刷题练手感(北航期末往年数据结构编程题)

本次因为是考前一天极速刷题&#xff0c;所以没有讲解&#xff0c;若有问题可私信。 目录 一、 查找同时空人员二、 老鼠回家-无回路三、函数调⽤关系四、东二食堂模拟五、栈帧 一、 查找同时空人员 【问题描述】 假设一共有6个手机基站&#xff0c;都具有记录手机连接基站状…

天马学航——智慧教务系统(移动端)开发日志八

天马学航——智慧教务系统(移动端)开发日志八 日志摘要&#xff1a;完成了对用户主界面的优化&#xff0c;再次优化数据库缓存&#xff0c;使数据库读写分离 优化主界面 优化用户界面&#xff0c;使界面看起来更加亲切贴合 主要源码 build() {Row() {Column({space:30}) {Te…

调试器接口是什么?

目录 一、调试器接口 1.1 什么是下载调试器&#xff1f; 1.2 JTAG标准/协议 1.3 SWD标准 一、调试器接口 1.1 什么是下载调试器&#xff1f; 简单来讲&#xff0c;它就是一种能把PC端发送的命令&#xff08;通过USB协议&#xff09;转换为MCU能理解的语言&#xff08;SWD协…

# [0622] Task02 model-free 免模型类 RL 算法的预测和控制 【ε 贪心策略 优化的证明】

easy-rl PDF版本 笔记整理 P3 joyrl 比对 补充 P4 - P5 相关 代码 整理 ——> 有空 另开一页 最新版PDF下载 地址&#xff1a;https://github.com/datawhalechina/easy-rl/releases 国内地址(推荐国内读者使用)&#xff1a; 链接: https://pan.baidu.com/s/1isqQnpVRWbb3yh8…

51单片机STC89C52RC——6.1 中断系统

一&#xff0c;文字层面理解 反正我看下面的几段文字时脑壳没有正常运转。一个头几个大 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求&#xff0c;要求CPU暂停当前的工作&#xff0c;转而去处理这…

【LLM之KG】KoPA论文阅读笔记

研究背景 知识图谱补全&#xff08;KGC&#xff09;是通过预测知识图谱中缺失的三元组来完善知识图谱的信息。传统方法主要基于嵌入和预训练语言模型&#xff0c;但这些方法往往忽视了知识图谱的结构信息&#xff0c;导致预测效果不佳。 研究目标 本文的研究目标是探索如何将…

【Linux】基础IO_3

文章目录 六、基础I/O3. 软硬链接4. 动静态库 未完待续 六、基础I/O 3. 软硬链接 使用 ln 就可以创建链接&#xff0c;使用 ln -s 可以创建软链接&#xff0c;直接使用 ln 则是硬链接。 我们对硬链接进行测试一下&#xff1a; 根据测试&#xff0c;我们知道了 硬链接就像一…

食品行业BC一体化运营方案

一、引言 在当前的市场环境下&#xff0c;食品行业面临着日益激烈的竞争和不断变化的消费者需求。传统的经营模式已无法满足现代消费者对高效、便捷和个性化服务的要求。因此&#xff0c;实施BC&#xff08;Business to Consumer&#xff09;一体化运营方案成为必然选择。通过…

某程序员:30岁了,老婆管钱,背着我买了50万股票,亏了20w,强制她清仓后又买了36万

“辛辛苦苦攒了几年钱&#xff0c;本想买房买车&#xff0c;结果全被老婆炒股亏掉了&#xff01;” 近日&#xff0c;一位30岁的程序员大哥在网上吐苦水&#xff0c;引发了网友们的热议。 这位程序员大哥和妻子结婚后&#xff0c;一直秉持着“男主外&#xff0c;女主内”的传统…

c语言 课设 atm

功能需求分析 ATM功能主界面:显示所能进行的操作,用户可多次选择。 ATM注册界面:输入用户名,用户密码,确认密码,密码长度不是六位重新输入,两次密码不一致重新输入,输入账号。密码隐藏,实现退格换行对*无影响。多人注册 ATM登录界面:输入账号,密码,三次以内输入…

git常用操作汇总大全

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;入职小红书广告投放开发&#xff0c;很高兴认识大家&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博…

ThinkPHP6图书借阅管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP6图书借阅管理系统 一 介绍 此图书借阅管理系统基于ThinkPHP6框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 ThinkPHP6mysqlbootstrapphpstudyvscode 二 功能 用户 1 登录/注销…