当前位置: 代码网 > it编程>App开发>Android > Android翻转动画(卡片翻转效果)

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

2024年07月28日 Android 我要评论
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上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.onclicklistener() {

@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();

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

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

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上android开发知识点!不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
外链图片转存中…(img-nikqypyw-1715435221472)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上android开发知识点!不论你是刚入门android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com