我創建了一個圓圈,在我onDraw()
方法繪製繞了一圈,併線(箭頭)的字符串。Android的動畫選擇畫布
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)?只有一次或循環?如果它處於循環中,則可以旋轉一切,但只能使用畫布進行旋轉。 如果不是,你需要它自己的元素上的線/查看 – Day
我不是單獨調用'onDraw()'。我修改了我的代碼,以便您可以查看。 – Ibungo