Я хочу использовать анимацию, в которой значение альфа уменьшается с увеличением масштаба эллипса.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:pivotX="50%"
android:pivotY="50%"
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="2"
android:toYScale="2"
android:repeatCount="infinite"
android:repeatMode="restart"
/>
<alpha android:fromAlpha="1"
android:toAlpha="0"
android:repeatCount="infinite"
android:repeatMode="restart"/>
</set>
![enter image description here](https://i.stack.imgur.com/6vzwr.png)
На рисунке вышепоказывает шаг анимации, а не фактический шаг.(То есть на приведенном выше изображении показаны пять идентичных анимаций ряби, запущенных с задержкой.)
В настоящее время я реализую это, создав один просмотр для каждой анимации и запустив каждый из них.
layout.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:elevation="5dp">
<ImageView
android:id="@+id/imageView2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"/>
<ImageView
android:id="@+id/imageView3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"/>
<ImageView
android:id="@+id/imageView4"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"/>
<ImageView
android:id="@+id/imageView5"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"/>
<ImageView
android:id="@+id/imageView6"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"/>
<Button
android:id="@+id/button"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_vertical|end"
android:background="@drawable/button"
android:textColor="#000"/>
</FrameLayout>
code.kt
button.setOnClickListener {
// Plays the animation in different views at 0.2 second intervals.
Observable.just(imageView2,imageView3,imageView4,imageView5,imageView6)
.zipWith(Observable.interval(200,TimeUnit.MILLISECONDS),{ v:ImageView, _:Long->
v
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ view->
val ani = AnimationUtils.loadAnimation(activity!!,R.anim.button_anim)
ani.duration = 1000
view.startAnimation(ani)
},{
})
}
В результате этот метод соответствует тому, что я хочу, но я чувствую, что слишком много бесполезных представлений для представления одного потока.
Есть ли более эффективный способ?