Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 视图中的简单二维图形_Android - Fatal编程技术网

Android 视图中的简单二维图形

Android 视图中的简单二维图形,android,Android,在视图上绘制像素、直线和圆的最简单方法是什么? 我想移动一个十字光标,这样就不会有什么特别强烈的效果了 我想我可以扩展SurfaceView并将其添加到XML中,它会正常工作,但它只是显示为黑色,然而,当我在eclipse中查看localmap.XML的布局视图时,图形显示如预期的那样 有什么想法吗?我的onDraw从未在模拟器上调用过,甚至在类上调用invalidate也没有什么区别。我会继续努力,但有人能看到我错过的东西吗?还是有更好的办法 弗林克 localmap.xml包含以下内容(

在视图上绘制像素、直线和圆的最简单方法是什么? 我想移动一个十字光标,这样就不会有什么特别强烈的效果了

我想我可以扩展SurfaceView并将其添加到XML中,它会正常工作,但它只是显示为黑色,然而,当我在eclipse中查看localmap.XML的布局视图时,图形显示如预期的那样

有什么想法吗?我的onDraw从未在模拟器上调用过,甚至在类上调用invalidate也没有什么区别。我会继续努力,但有人能看到我错过的东西吗?还是有更好的办法

  • 弗林克
localmap.xml包含以下内容(在RelativeLayout中)

}

private void drawPixel(画布、int x、int y、int color){
mPaint.setColor(彩色);
如果((x>=MAP\u MIN\u x)和&(x=MAP\u MIN\u y)和&(y
使用SurfaceView,您不会在onDraw()中绘制图形。你必须从下面的表面抓起一块画布,在那里画画。在我看来,你真的不知道为什么要使用SurfaceView。只需使用普通视图,onDraw()就可以正常工作。

我想我一定是在某个地方弄糊涂了。LunarLander示例使用SurfaceView,所以我一定复制了它。谢谢,弗林克
  <com.example.android.game.LocalMapView
android:id="@+id/localmap_map"
android:layout_width="fill_parent"
android:layout_above="@id/localmap_planettext"
android:layout_below="@id/header"/>
public class LocalMapView extends SurfaceView {

Paint mPaint = new Paint();

//Construct a LocalMapView based on inflation from XML
public LocalMapView(Context context, AttributeSet attrs) {
    super(context, attrs);

    // allow the map to receive the focus
    setFocusable(true);
private void drawPixel(Canvas canvas, int x, int y, int colour) {
    mPaint.setColor(colour);
    if ((x >= MAP_MIN_X) && (x < MAP_MAX_X) && (y >= MAP_MIN_Y) && (y < MAP_MAX_Y)) {
        canvas.drawPoint(((float)x * mScaleMapToScreenX), ((float)y * mScaleMapToScreenY), mPaint);
    }
}



private void drawCircle(Canvas canvas, int x, int y, int radius, int colour) {
    mPaint.setColor(colour);
canvas.drawCircle(((float)x), ((float)y), ((float)radius), mPaint);
}




@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);       
    drawCircle(canvas, MAP_MAX_X/2, MAP_MAX_Y/2, 1, 0xFF00FFFF);
    drawPixel(canvas, MAP_MAX_X/2, MAP_MAX_Y/2, 0xFF000000);
}