首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在android中旋转一个圆围绕另一个圆

在Android中旋转一个圆围绕另一个圆,可以使用动画和自定义视图来实现。下面是一个实现的示例:

  1. 首先,创建一个自定义的View类,继承自View,并重写onDraw方法来绘制两个圆。
代码语言:txt
复制
public class CircleView extends View {
    private Paint paint;
    private float centerX, centerY;
    private float radius1, radius2;
    private float angle = 0;

    public CircleView(Context context) {
        super(context);
        init();
    }

    public CircleView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setColor(Color.BLUE);
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        centerX = w / 2f;
        centerY = h / 2f;
        radius1 = Math.min(w, h) / 4f;
        radius2 = Math.min(w, h) / 8f;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(centerX, centerY, radius1, paint);

        float x = (float) (centerX + radius1 * Math.cos(Math.toRadians(angle)));
        float y = (float) (centerY + radius1 * Math.sin(Math.toRadians(angle)));
        canvas.drawCircle(x, y, radius2, paint);
    }

    public void setAngle(float angle) {
        this.angle = angle;
        invalidate();
    }
}
  1. 在Activity中使用这个自定义View,并通过属性动画来实现旋转效果。
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private CircleView circleView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        circleView = findViewById(R.id.circle_view);

        ObjectAnimator animator = ObjectAnimator.ofFloat(circleView, "angle", 0, 360);
        animator.setDuration(2000);
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.setInterpolator(new LinearInterpolator());
        animator.start();
    }
}
  1. 在布局文件中添加自定义View。
代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <com.example.myapplication.CircleView
        android:id="@+id/circle_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

这样就可以在Android中实现一个圆围绕另一个圆旋转的效果了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券