Invalidate()为什么不呢?

时间:2016-03-24 17:26:19

标签: java android invalidation

我有一个自定义视图,我覆盖了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);





 }
 }

1 个答案:

答案 0 :(得分:0)

Bingo!当我将日历对象的时区设置为我的国家时,无效的工作和ondraw在模拟器和真实手机上更新。