面试题答案
一键面试实现步骤
- 引入必要的库,在Kotlin的Android开发中,属性动画相关库已包含在Android SDK中,无需额外引入。
- 获取要进行动画的View。
- 创建属性动画对象,使用
ObjectAnimator
来实现淡入淡出效果,淡入是透明度从0到1,淡出是透明度从1到0。 - 设置动画的相关属性,如持续时间、重复次数等。
- 启动动画。
核心代码片段
import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import android.animation.ValueAnimator
class MainActivity : AppCompatActivity() {
private lateinit var imageView: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
imageView = findViewById(R.id.imageView)
val fadeInButton: Button = findViewById(R.id.fadeInButton)
val fadeOutButton: Button = findViewById(R.id.fadeOutButton)
fadeInButton.setOnClickListener {
fadeIn()
}
fadeOutButton.setOnClickListener {
fadeOut()
}
}
private fun fadeIn() {
val fadeInAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1f)
fadeInAnimator.duration = 1000 // 持续时间1秒
fadeInAnimator.start()
}
private fun fadeOut() {
val fadeOutAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 1f, 0f)
fadeOutAnimator.duration = 1000 // 持续时间1秒
fadeOutAnimator.start()
}
}
在布局文件(activity_main.xml
)中要有对应的ImageView
和Button
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/your_image" />
<Button
android:id="@+id/fadeInButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="淡入" />
<Button
android:id="@+id/fadeOutButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="淡出" />
</LinearLayout>