1
什么是在视图上绘制像素,线条和圆的最简单方法? 我想移动十字光标,所以没有特别的密集。我认为我可以扩展SurfaceView并将其添加到XML,它只会工作,但它只是显示为黑色,但是,当我在eclipse中查看localmap.xml的布局视图时,图形按预期显示。视图中的简单2D图形
任何想法?我的onDraw永远不会在模拟器上调用,甚至在类上调用invalidate没有任何区别。我会继续尝试,但任何人都可以看到我错过的任何东西?或者完全有更好的方法吗?
- 弗林克
localmap.xml包含以下(在RelativeLayout的)
<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"/>
LocalMapView.java包含以下(除其他事项外)
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);
}
我想我一定在某个方面有点困惑。 LunarLander示例使用SurfaceView,所以我必须复制它。谢谢, - Frink – FrinkTheBrave 2010-08-15 07:11:12