我有一个自定义视图,我覆盖了ondraw
。当我运行我的程序时,方法invalidate
会更新模拟器上的ondraw
,但它根本无法在真实手机上运行,并且视图已在手机上修复。
有谁知道为什么?
这是我的代码:
package com.example.canvas;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Handler;
import android.view.View;
public class Myview extends View{
String second="0";
int r=100;
public Myview(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint=new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(12);
canvas.drawLine(getWidth()/2f, getHeight()/2f,getWidth()/2f+ ((r-18.0f)*(float)Math.cos(Math.toRadians((Float.valueOf(second)/60f*360f) -90.0f))) ,getHeight()/2f+((r-18.0f)*(float)Math.sin(Math.toRadians ((Float.valueOf(second)/60f*360f)-90.0f))), paint);
update();
super.onDraw(canvas);
}
private void update() {
Handler h=new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
Calendar c=Calendar.getInstance();
SimpleDateFormat ss=new SimpleDateFormat("ss");
second=ss.format(c.getTime());
invalidate();
}
}, 1000);
}
}
答案 0 :(得分:0)
Bingo!当我将日历对象的时区设置为我的国家时,无效的工作和ondraw在模拟器和真实手机上更新。