【问题标题】:Invalidate() why not?Invalidate() 为什么不呢?
【发布时间】:2016-03-24 17:26:19
【问题描述】:

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





 }
 }

【问题讨论】:

  • 请至少显示一段代码。谢谢。

标签: java android invalidation


【解决方案1】:

宾果游戏!当我将日历对象的时区设置为我的国家/地区时,无效工作并且在模拟器和真实手机上更新了 ondraw。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 2017-06-09
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多