Android翻转动画(卡片翻转效果),我是如何收割多家大厂offer的

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

invisibletext.setVisibility(View.VISIBLE);

}

});

visToInvis.start();

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

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

Android开发除了flutter还有什么是必须掌握的吗?

相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了

除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;

点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】

,找工作越来越难了,面试的要求越来越高了

除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;

点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】

[外链图片转存中…(img-RkRsdOsd-1711049133517)]

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 翻转动画可以通过以下步骤实现: 1. 创建两个布局,一个正面布局和一个背面布局。 2. 在正面布局中添加一个翻转按钮,当用户点击该按钮时触发翻转动画。 3. 在翻转动画的XML文件中定义动画属性。您需要定义旋转轴,旋转角度和动画持续时间等属性。 4. 在Java代码中,使用Animation类的loadAnimation()方法加载动画,并将其应用于正面布局。 5. 为翻转按钮添加一个点击监听器,当用户点击按钮时,使用View类的startAnimation()方法启动动画。 6. 在动画的监听器中,检查当前布局显示的是正面还是背面,然后改变布局的可见性,以显示另一个布局。 以下是一个简单的示例代码,可以让您更好地理解如何实现Android翻转动画。 ``` // 加载动画 Animation animation = AnimationUtils.loadAnimation(this, R.anim.flip_animation); // 应用动画到正面布局 View frontLayout = findViewById(R.id.front_layout); frontLayout.setAnimation(animation); // 为翻转按钮添加点击监听器 Button flipButton = findViewById(R.id.flip_button); flipButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 启动动画 frontLayout.startAnimation(animation); } }); // 监听动画的开始和结束 animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { // 检查当前布局显示的是正面还是背面 if (frontLayout.getVisibility() == View.VISIBLE) { // 如果是正面,隐藏正面显示背面 frontLayout.setVisibility(View.GONE); View backLayout = findViewById(R.id.back_layout); backLayout.setVisibility(View.VISIBLE); } else { // 如果是背面,隐藏背面显示正面 frontLayout.setVisibility(View.VISIBLE); View backLayout = findViewById(R.id.back_layout); backLayout.setVisibility(View.GONE); } } @Override public void onAnimationRepeat(Animation animation) { } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值