Android studio:扩大和缩小圆圈动画



我试图在android studio中创建一个扩展和收缩的圆圈。我只想使用一个Java类和一个布局xml文件。有什么建议吗?

希望有帮助:如果你想创建一个圆形,我建议你创建一个椭圆形。

首先在您的可绘制包中创建一个XML文件,右键单击它并选择一个新的资源文件,为该文件命名,假设为bg_circle。

<shape android:shape="oval" 
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary"/>
<stroke android:color="@color/colorAccent" android:width="2dp"/>
</shape> 

这将创建一个椭圆形,您可以根据您的color.xml文件更改颜色。现在,你需要在imageView中添加一个属性也就是

android: src = "@drawable/bg_circle".

如果你不需要圆的轮廓,你可以从bg_circle.xml中删除笔画颜色

有几种方法可以做到这一点。一种选择是在你的xml布局中使用CardView中的ImageView,并将其动画化,这里是一个带有黑色圆圈的最小示例:

<androidx.cardview.widget.CardView
android:id="@+id/cv_round"
android:layout_width="40dp"
android:layout_height="40dp"
app:cardCornerRadius="20dp">  // -> this makes it look circular
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" />
</androidx.cardview.widget.CardView>

注意,这不是一个真正的圆,它只是看起来像一个。

在Java代码中强制转换CardView后:

CardView cardViewCircular = (CardView) findViewById(R.id.cv_round);

扩展/收缩动画是使用ViewPropertyAnimator f.e(扩展50f)的一行代码:

cardViewCircular.animate().scaleYBy(50f).scaleXBy(50f); //deflating is -50f

或使用scaleX(50f)/scaleY(50f)方法,以最适合您的为准。

最新更新