Простая простая 2D графика в представлении

Что самый простой путь состоит в том, чтобы потянуть пиксели, строки и круги на Представлении? Я хочу переместить перекрестный курсор вокруг, таким образом, ничто особенно интенсивное.

Я думал, что мог расширить SurfaceView и добавить его к XML, и это будет просто работать, но просто кажется черным, однако, когда я смотрю на представление расположения localmap.xml в затмении, графика появляется как ожидалось.

Какие-либо идеи? Мой onDraw никогда не называют на эмуляторе, и даже вызов делает недействительным на классе, не имеет никакого значения. Я буду продолжать пробовать, но кто-либо может видеть что-нибудь, что я пропустил? или есть ли полностью лучший путь?

  • Frink

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);
}
1
задан FrinkTheBrave 14 August 2010 в 19:24
поделиться

1 ответ

С SurfaceView вы не можете рисовать в onDraw (). Вам нужно взять холст с подстилающей поверхности и нарисовать там. Мне кажется, вы действительно не знаете, зачем используете SurfaceView. Просто используйте вместо него обычный просмотр, и onDraw () будет работать нормально.

2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: