Ich habe eine benutzerdefinierte Ansicht und ich habe die ondraw
überschrieben. Wenn ich mein Programm starte, aktualisiert die Methode invalidate
die ondraw
auf meinem Emulator, aber es funktioniert überhaupt nicht auf dem echten Telefon und die Ansicht ist auf dem Telefon behoben.Invalidate() warum nicht?
Jeder weiß warum?
hier mein Code:
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);
}
}
Bitte zeigen Sie mindestens ein Stück Code. Vielen Dank. – statosdotcom
Hier ist mein Code – user6037288