Я создал круг, нарисовал строку вокруг круга и линию (стрелку) в моем методе 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
в центр круга. Может ли кто-нибудь поделиться мне какой-то идеей?
Когда вызывается onDraw (Canvas c)? Только один раз или в цикле? Если он находится в цикле, вы можете вращать все, кроме строки с холстом. Если вам не нужна строка на свой собственный элемент/View – Day
Я не называю 'onDraw()' отдельно. Я изменил свой код, чтобы вы могли посмотреть. – Ibungo