2012-03-26 4 views
0

私はギャラクシーネクサスの画面中央に円を描こうとしています。私はこのコード行を使用していることを行うには:ギャラクシーネクサス、中心の円を描く

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

問題は、私は唯一、画面の右下に円の四半期を見ることができます。私はGalaxy SIIで全く同じコードを試していて、画面の中央に円を描いています。私はgetwidthとgetheightの値をチェックして、640x1052を報告しますが、画面上の右下のピクセルの座標は約450(画面上のボタンを除く)で320です。

何が起こっていますか?アプリの一部で解決策などを設定できますか?

私は以下のすべてのアクティビティを含めました。コードの最も重要な線があるべき

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

}

答えて

0

canvas.drawCircle(のgetWidth()/ 2、のgetHeight()/ 2、40、塗料);

私はあなたが描いている線が、画面の左上から右下に(正しく)移動していると仮定しています。

+1

ありがとう、そうです。それはそれを修正したようだ。 Galaxy Nexusではなく、SIIで動作するのはなぜですか? – DNN