2012-03-26 15 views
0

Ich versuche, einen Kreis in der Mitte des Bildschirms meines Galaxy Nexus zu zeichnen, mehr als eine Lernerfahrung als alles andere. Zu tun, dass ich diese Zeile Code bin mit:Galaxy Nexus, einen zentrierten Kreis zeichnen

canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 40, paint); 

Das Problem ist, ich nur ein Viertel des Kreises in der unteren rechten Ecke des Bildschirms sehen. Ich habe diesen genau gleichen Code auf meinem Galaxy SII ausprobiert und es zeichnet den Kreis in der Mitte des Bildschirms. Ich habe den Wert von getwidth und getheight geprüft und es meldet 640x1052, aber auf dem Bildschirm ist die Koordinate des unteren rechten Pixels 320 von etwa 450 (ohne die Schaltflächen auf dem Bildschirm).

Was ist los? Könnte ein Teil der App die Auflösung einstellen oder so?

Ich habe meine volle Aktivität unten aufgeführt.

package com.helloworld; 


import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Paint.Style; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 

public class ShapeTest extends Activity { 
    class RenderView extends View { 
     Paint paint; 
     public RenderView(Context context) { 
      super(context); 
      paint = new Paint(); 
     } 
     protected void onDraw(Canvas canvas) { 
      Context context = getApplicationContext(); 

     canvas.drawRGB(255, 255, 255); 
     paint.setColor(Color.RED); 
     canvas.drawLine(0, 0, this.getWidth()-1, this.getHeight()-1, paint); 
     paint.setStyle(Style.STROKE); 
     paint.setColor(0xff00ff00); 
     canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 40, paint); 
     paint.setStyle(Style.FILL); 
     paint.setColor(0x770000ff); 
     canvas.drawRect(100, 100, 200, 200, paint); 

    } 
} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(new RenderView(this)); 
} 

}

Antwort

0

, die wichtigste Zeile Code sein sollte:

canvas.drawCircle (getWidth()/2, getHeight()/2, 40, Farbe);

Ich gehe davon aus, dass die Linie, die Sie zeichnen, (richtig) von der oberen linken Seite des Bildschirms auf die untere rechte Ecke geht, oder?

+1

Danke, ja, es tut. Das scheint es behoben zu haben. Warum sollte es bei einem SII und nicht bei einem Galaxy Nexus funktionieren? – DNN

Verwandte Themen