gpt4 book ai didi

java - 选定 Canvas 的 Android 动画

转载 作者:行者123 更新时间:2023-12-01 04:19:03 29 4
gpt4 key购买 nike

我创建了一个圆,在我的 onDraw() 方法中围绕圆绘制了一条字符串和一条线(箭头)。

public class Circle extends Activity {  

public class OuterCircle extends View {
Paint paint = new Paint();
private Animation anim;
Path path = new Path();
private static final String s = "Hello world example";

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

private void init() {
paint.setColor(Color.WHITE);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
}

private void drawStringOnCircle(Canvas c) {
path.addCircle(getWidth()/2, getHeight()/2, 180, Direction.CW);
c.drawTextOnPath(s, path, 0, 10, paint);
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

private void createAnimation() {
anim = new RotateAnimation(0, 360, getWidth()/2, getHeight()/2);
anim.setRepeatMode(Animation.RESTART);
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(100L);
startAnimation(anim);
}

public void onDraw(Canvas c) {
int cx = getWidth()/2;
int cy = getHeight()/2;

if (anim == null) {
createAnimation();
}

c.drawCircle(cx, cy, 170, paint);
drawStringOnCircle(c);
c.drawLine(cx, cy, cx, cy+170, paint); // do not include this line in animation
}
}

OuterCircle = compassView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
compassView = new DrawCompass(this);
setContentView(compassView);
}
}

我只想将动画应用于圆圈及其周围的文本(使用 Android 动画旋转圆圈及其周围的文本)。我在圆内绘制的线必须是静止的(动画不应应用于该线)。然而,上面的代码将动画应用到所有 3 个 Canvas 上。我应该做出哪些改变?

另外,我想在圆圈中间添加一个 TextView 。有人可以分享一些想法吗?

最佳答案

您可以实现一个新的View,它仅绘制线条而不对其进行动画处理。然后,在布局中,您可以在 OuterCirle-View 之上绘制 Line-View,或者使用 addView(lineView) 在代码中完成此操作。

以同样的方式添加 TextView

更新:使用setContentView(),您应该设置一个可以包含其他 View 的View -> 像RelativeLayout这样的布局。在此布局中,您可以通过调用RelativeLayout.addView(childView)来添加多个View。这样您就可以添加旋转的圆,然后添加线条,然后根据需要添加 TextView

关于java - 选定 Canvas 的 Android 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156166/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com