如何在Android Studio中通过Kotlin实现Vector动画在MainActivity展示
在Android Studio中通过Kotlin实现Vector动画展示
我在Android Studio中拥有若干Vector绘图XML文件,需要在MainActivity中通过Kotlin实现其动画展示。主动画文件为hello_android.xml,预期效果为Android机器人挥手切换至静止、再从静止恢复挥手的动画,其余配套Vector文件可从技术文章获取。
以下是hello_android.xml的代码:
<?xml version="1.0" encoding="utf-8"?> <animated-selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/enabled" android:drawable="@drawable/hello_android_enabled" android:state_enabled="true"/> <item android:id="@+id/disabled" android:drawable="@drawable/hello_android_disabled"/> <transition android:drawable="@drawable/hello_android_waving" android:fromId="@id/enabled" android:toId="@id/disabled"/> <transition android:drawable="@drawable/hello_android_stay_calm" android:fromId="@id/disabled" android:toId="@id/enabled"/> </animated-selector>
实现步骤:
添加布局控件
在activity_main.xml中添加ImageView,引用上述动画文件:<ImageView android:id="@+id/animatedAndroid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/hello_android" android:clickable="true"/>Kotlin逻辑实现
在MainActivity.kt中通过切换View的enabled状态触发动画:class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val animatedAndroid = findViewById<ImageView>(R.id.animatedAndroid) animatedAndroid.setOnClickListener { // 切换enabled状态,触发对应的过渡动画 it.isEnabled = !it.isEnabled } } }
原理说明:
animated-selector会根据View的状态(这里是enabled)自动切换对应的Drawable:
- 当View处于
enabled=true时,显示hello_android_enabled - 当View切换到
enabled=false时,播放hello_android_waving过渡动画,最终显示hello_android_disabled - 当再次切换回
enabled=true时,播放hello_android_stay_calm过渡动画,回到初始状态
内容的提问来源于stack exchange,提问作者Eblo
相关产品推荐
相关产品推荐

