浦口区建设局网站,商务网站策划方案,夹江移动网站建设,下载建设银行官方网站下载安装1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程#xff0c;本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行#xff0c;这些动画控制的…1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行这些动画控制的动画参数往往是相同的参数。与动画图层不同动画图层是指多个动画同时执行互不干扰这些动画控制的动画参数往往是不同的参数。 在动画状态机窗口右键在弹出的菜单栏中选择【Add State】创建一个新的动画节点选中创建的动画节点在右侧窗口选择动画混合选项卡如下。 Input 下拉列表可以选择一个 Number 类型变量表示将由该变量控制动画混合的比例Timelines 里可以添加多个动画即时间线表示参与混合的动画。如下是配置的一个混合动画。 2 应用 本节将介绍使用 Rive 制作一个秒表。Rive 在 Android 中的环境配置详见 → Rive在Android上的简单应用。本节完整资源详见 → 基于Android和Rive实现秒表。 1界面元素 创建一个圆形做表盘再创建一个矩形做指针对指针进行裁角处理界面显示如下。 2时间线、输入变量、状态机 ①时间线说明SecStart、SecEnd 都只对指针的旋转参数做动画并且都只有一帧SecStart 的旋转值为 0SecEnd 的旋转值为 360。 ②输入变量说明Second 用于控制混合动画的混合系数。 3MainActivity
package com.zhyan8.secondWatchimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import app.rive.runtime.kotlin.RiveAnimationView
import java.util.Calendarclass MainActivity : AppCompatActivity() {private lateinit var clockView: RiveAnimationViewprivate lateinit var handler: Handlerprivate var keepGoing trueprivate val deltaTime 1000Loverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)clockView findViewById(R.id.clock)handler Handler(Looper.getMainLooper())handler.postDelayed(task, deltaTime)}override fun onDetachedFromWindow() {keepGoing falsesuper.onDetachedFromWindow()}private fun setTime() {val calendar Calendar.getInstance()val second calendar.get(Calendar.SECOND).toFloat()clockView.setNumberState(State Machine 1, Second, second)}private val task object: Runnable {override fun run() {if (keepGoing) {setTime()handler.postDelayed(this, deltaTime)}}}
} 4activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:contextcom.zhyan8.secondWatch.MainActivityandroid:orientationverticalandroid:gravitycenterapp.rive.runtime.kotlin.RiveAnimationViewandroid:idid/clockandroid:layout_width400dpandroid:layout_height400dpapp:riveFitCOVERapp:riveResourceraw/seccond_watchapp:riveStateMachineState Machine 1 //LinearLayout 5运行效果