Galaxy Nexus,绘制一个居中的圆圈

时间:2012-03-26 10:27:58

标签: android

我正试图在我的Galaxy Nexus屏幕中央画一个圆圈,更像是一种学习经验。要做到这一点,我正在使用这行代码:

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

问题是我只能看到屏幕右下方四分之一的圆圈。我在我的Galaxy SII上尝试了这个完全相同的代码,它在屏幕中间画了一个圆圈。我已经检查了getwidth和getheight的值并报告了640x1052,但是在屏幕上,右下角像素的坐标是320乘以约450(不包括屏幕上的按钮)。

发生了什么事?部分应用可以设置分辨率吗?

我在下面列出了我的完整活动。

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

}

1 个答案:

答案 0 :(得分:0)

最重要的代码应该是:

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

我假设您正在绘制的线条(正确地)从屏幕的左上角到右下角,对吧?