=================================================================
最近好友问计蒙翻转动画,恰好在大二那年看android api demo时记了笔记,由此写一篇文章。
=================================================================
屏幕右滑事件触发卡片的翻转效果 ,为了方便,在例子中将右滑事件改成按钮点击事件
老规矩,最后有源码
=========================================================================
linearinterpolator() 其变化速率恒定
accelerateinterpolator() 其变化开始速率较慢,后面加速
decelerateinterpolator() 其变化开始速率较快,后面减速
=====================================================================
一个按钮,两个textview(布局文件在源码部分)
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();
发现实现后,第一次点击出现bug
在找到控件后,默认设置y方向角度
textview2.setrotationy(-90f);
===================================================================
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开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
发表评论