在代码当中都已经添加了注释,不明白的反复看,看反复,推论思路即可!!!
一、在Xml中:
<android.support.constraint.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:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/d" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintCircle="@id/imageView"
app:layout_constraintCircleRadius="100dp"
app:layout_constraintCircleAngle="30"
app:srcCompat="@drawable/c" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintCircle="@id/imageView"
app:layout_constraintCircleRadius="100dp"
app:layout_constraintCircleAngle="120"
app:srcCompat="@drawable/b" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintCircle="@id/imageView"
app:layout_constraintCircleRadius="100dp"
app:layout_constraintCircleAngle="260"
app:srcCompat="@drawable/a" />
</android.support.constraint.ConstraintLayout>
二、在Activity中:
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
private ImageView imageView2;
private ImageView imageView3;
private ImageView imageView4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//创建并开启动画
creatAndStartAnimator(imageView2,3000);
creatAndStartAnimator(imageView3,5000);
creatAndStartAnimator(imageView4,7000);
}
private void creatAndStartAnimator(final ImageView view , long duration){
//原生控件 //视图获取参数
final ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) view.getLayoutParams();
//实例化属性动画 //360度+你要操作的参数
ValueAnimator valueAnimator = ValueAnimator.ofFloat(params.circleAngle,360+params.circleAngle);
// 添加更新监听
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//在动画更新上的时候,获取属性动画
params.circleAngle = (Float) animation.getAnimatedValue();
// 在试图上显示的参数
view.setLayoutParams(params);
}
});
//设置时间
valueAnimator.setDuration(duration);
//设置个数、大小
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
//设置监听
valueAnimator.setInterpolator(new LinearInterpolator());
//开启动画
valueAnimator.start();
}
private void initView() {
imageView = (ImageView) findViewById(R.id.imageView);
imageView2 = (ImageView) findViewById(R.id.imageView2);
imageView3 = (ImageView) findViewById(R.id.imageView3);
imageView4 = (ImageView) findViewById(R.id.imageView4);
}
}