2016-03-24 39 views
-1

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); 





} 
} 
+1

Bitte zeigen Sie mindestens ein Stück Code. Vielen Dank. – statosdotcom

+0

Hier ist mein Code – user6037288

Antwort

0

Bingo, wenn ich Zeitzone für Kalenderobjekt in meinem Land gesetzt, ungültig gearbeitete und OnDraw wurde auf Emulator und echtes Telefon aktualisiert.

Verwandte Themen