文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android动画了解—一些项目案例分析

2022-06-06 14:13

关注

文章目录写在前面带路径运动的过渡动画整体缩放的效果整体宽高改变的过渡效果两个界面布局的过渡效果带水波纹布局的效果几行代码实现转圈圈的效果界面翻转的效果 写在前面

由于我前面写了N多篇文章,但是还是感觉缺少一些相关的生动的例子,所以分析一些,手写一些。

带路径运动的过渡动画

在这里插入图片描述
最近MIUI 12 更新,我发现它又一个界面启动的转场过渡效果还不错,是带有抛物线的效果,所以在这里也写一个带抛物线的转场过渡效果.

大家可以发现,从Activity 跳转 Activity 的时候,有一个弧度的,这就是在共享过渡动画的基础添加的效果。

涉及知识点

过渡/转场动画:
Android动画了解—转场/过渡(Transition) 动画

实现代码(超级简单)

// XiaomiDemoActivity 的代码
ViewCompat.setTransitionName(view, "ShardTest");
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(XiaomiDemoActivity.this,
                view, "ShardTest");
// 启动
Intent intent = new Intent(this, XiaoMiHomeActivity.class);
intent.putExtra("res", res);
startActivity(intent, options.toBundle());
// XiaoMiHomeActivity 的代码
// XML需要设置共享元素一样的名称
// 设置运动轨迹的效果     
ArcMotion arcMotion = new ArcMotion();
rcMotion.setMinimumVerticalAngle(90f);
getWindow().setSharedElementEnterTransition(changeBounds);
getWindow().setSharedElementExitTransition(changeBounds);
// 设置 XiaoMiHomeActivity 传过来的图片资源.
Intent intent = getIntent();
int res = intent.getIntExtra("res", R.drawable.mitv_icn_game);
shareIv.setImageResource(res);

XimoMiHomeActivity源码

XiaoMiDemoActivity源码

整体缩放的效果

我们看到 MIUI 12 锁屏解锁后,桌面会整体缩放回来,这里的缩放涉及到每个图标,我们就来分析下吧.
在这里插入图片描述

涉及的知识点:

过渡/转场动画:
Android动画了解—转场/过渡(Transition) 动画 当然属性动画也能做,不过用这种方式就更简单一些

代码实现方式:

Transition explode = new Explode();
explode.setDuration(888);
TransitionManager.beginDelayedTransition(mLauncherRv, explode);
mLauncherRv.setAdapter(new LauncherAdapter());

当然要完成小米那种更流畅的方式,肯定没有那么简单,很多细节还需要慢慢调整,这里只是写一个小DEMO,给大家讲解下思路.
在这里插入图片描述
DEMO源码

整体宽高改变的过渡效果

这里再次蹭一下 MIUI 12 的动画热点,还是拿出MIUI 的动效来看看,这里如何去实现呢?来看例子
在这里插入图片描述

涉及的知识点:

相关代码:

先去打球,晚上回来补齐

两个界面布局的过渡效果

在这里插入图片描述

带水波纹布局的效果

在这里插入图片描述

涉及的知识点:

View绘制流程(draw, onDraw):
不熟悉自定义View,可以复习下 自定义View 的绘制draw
绘制的相关知识点(Path,Region.Op):
Path 使用了 cubicTo(贝塞尔),moveTo,lineTo

代码实现

Path mPath = new Path();
Region.Op mRegionOp = Op.INTERSECT;
// draw 是绘制自身与子控件的地方.
public void draw(final Canvas canvas) {
 	try {
    	canvas.save();
		canvas.clipPath(mPath, mRegionOp);
		super.draw(canvas);
	} finally {
		canvas.restore();
	}
}
// 设置剪切掉的路径
public void revealForPercentage(float percent) {
	path.reset();
	path.moveTo(percent, 0f);
	path.lineTo(0f, 0f);
	path.lineTo(0f, getHeight());
	path.lineTo(percent, getHeight());
	path.close();
	invalidate();
}
//

在这里插入图片描述

LiquidSwipe源码

将cubicTo(贝塞尔)加上去后,最终的效果图如下:
在这里插入图片描述

源码查看

几行代码实现转圈圈的效果

众所众知,进度变化的时候,是很刻板的,没有过渡的效果,当然要实现也很简单,使用 属性动画,也可以做,但是这里我们介绍使用 过渡动画来做,要更简单一些。
在这里插入图片描述

涉及知识点:

过渡动画:
Android动画了解—转场/过渡(Transition) 动画

代码实现(超级简单)

// 保存之前的状态
TransitionManager.beginDelayedTransition(
(ViewGroup) findViewById(R.id.root_anim_layout), new ProgressTransition());
mProgressBarH.setProgress(value);

在这里插入图片描述
这样的话,圆形的进度条也可以这样做哦,看效果图
在这里插入图片描述
具体源码(setProgressTest)

界面翻转的效果

在这里插入图片描述

涉及的知识点:

属性动画:
ValueAnimator 或者 ObjectAnimatro 也可以.

相关代码:

ViewCompat.setPivotX(mLauncherRv, -mLauncherRv.getHeight());
ValueAnimator valueAnimator = ValueAnimator.ofFloat(1.0f, 0.0f);
valueAnimator.setInterpolator(new BounceInterpolator());
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {
	@Override
	public void onAnimationUpdate(final ValueAnimator animation) {
		float value = (float) animation.getAnimatedValue();
		mLauncherRv.setRotation(-90 * value);
	}
});
valueAnimator.setDuration(1888);
valueAnimator.start();

在这里插入图片描述
DEMO源码

原Flourish源码

Android动画了解系列文章

冰雪情缘TV 原创文章 53获赞 28访问量 2万+ 关注 私信 展开阅读全文
作者:冰雪情缘TV


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯