class MainActivity : AppCompatActivity() {
private var timer: Timer? = null
private var task: TimerTask? = null
var isPause = true
private var i = 0.0f
private lateinit var animator: ObjectAnimator
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
iv_rotate.setImageResource(R.mipmap.ic_launcher_round)
animator = ObjectAnimator.ofFloat(iv_rotate, "rotation", 0.0f, 360.0f)
with(animator) {
duration = 10*1000
interpolator = LinearInterpolator()
repeatCount = -1
repeatMode = ObjectAnimator.RESTART
}
btn_start.setOnClickListener {
startTimer()
}
btn_stop.setOnClickListener {
stopTimer()
}
btn_anim_reset.setOnClickListener {
animator.end()
}
btn_anim_start.setOnClickListener {
animator.start()
}
btn_anim_resume.setOnClickListener {
animator.resume()
}
btn_anim_stop.setOnClickListener {
animator.pause()
}
}
private fun startTimer() {
if (isPause) {
if (timer == null) {
timer = Timer()
}
if (task == null) {
task = object : TimerTask() {
override fun run() {
runOnUiThread {
i += 0.2f
iv_rotate.rotation = i % 360f
}
}
}
}
timer?.schedule(task, 5, 5)
isPause = false
}
}
private fun stopTimer() {
if (!isPause) {
timer?.cancel()
timer = null
task?.cancel()
task = null
isPause = true
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:layout_marginStart="168dp"
android:layout_marginBottom="312dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/iv_rotate"
android:layout_width="80dp"
android:layout_height="80dp"
tools:ignore="ContentDescription"/>
<Button
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/btn_start"
android:text="@string/start_rotate_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginStart="16dp"/>
<Button
app:layout_constraintStart_toEndOf="@id/btn_start"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/btn_stop"
android:text="@string/stop_rotate_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginStart="128dp"/>
<Button
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/btn_anim_start"
android:text="@string/start_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/btn_anim_start"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/btn_anim_stop"
android:text="@string/stop_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/btn_anim_stop"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/btn_anim_reset"
android:text="@string/reset_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/btn_anim_reset"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/btn_anim_resume"
android:text="@string/resume_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.constraintlayout.widget.ConstraintLayout>
网友评论