2016-08-05 25 views
0

Ich habe die folgende XML-Setup:auf Leinwand Zeichnung nicht funktioniert

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/content" 
     android:orientation="vertical"> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/navList" 
     android:layout_width="250dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="left|start" 
     android:background="#cccccc"/> 
</android.support.v4.widget.DrawerLayout> 

Ich möchte nun eine Leinwand in diesem linearen Layout ziehen, deshalb mache ich das:

Radar radar = new Radar(this, this.width); 
content.addView(radar); 

und hier ist die Radarklasse:

private int width; 

public Radar(Context context, int width){ 
    super(context); 
    this.width = width; 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    Paint circlePaint = new Paint(); 
    circlePaint.setColor(0xFF00FF00); 
    circlePaint.setStyle(Paint.Style.FILL); 

    Rect rect = new Rect(); 
    rect.set(0, 0, canvas.getWidth(), canvas.getHeight()/2); 

    canvas.drawRect(rect, circlePaint); 

    //canvas.drawCircle(0, 0, this.width, circlePaint); 
} 

das Problem, das ich ist begegnen, dass die Leinwand nicht angezeigt

Wie kann ich das beheben?

Antwort

0

fand ich die Antwort von setWillNotDraw(false);

0

Es unten Code arbeitete für das Hinzufügen von mir. Sie können es auch ähnlich versuchen. In

1) Layout

<com.example.canvas.DrawingArea 
     android:id="@+id/drawing" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_marginBottom="3dp" 
     android:layout_weight="1" 
     android:background="#FFFFFFFF" /> 

2)-Code

public class DrawingArea extends View { 

private Path drawPath; 
private Paint drawPaint, canvasPaint; 
private int paintColor = 0xFF660000; 
private Canvas drawCanvas; 
private Bitmap canvasBitmap; 

private boolean erase = false; 

public DrawingArea(Context context) { 
    super(context); 
    setupDrawing(); 
} 

public DrawingArea(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setupDrawing(); 
} 

public void setupDrawing() { 
    drawPath = new Path(); 
    drawPaint = new Paint(); 
    drawPaint.setAntiAlias(true); 
    drawPaint.setStrokeWidth(20); 
    drawPaint.setStyle(Paint.Style.STROKE); 
    drawPaint.setStrokeJoin(Paint.Join.ROUND); 
    drawPaint.setStrokeCap(Paint.Cap.ROUND); 

    canvasPaint = new Paint(Paint.DITHER_FLAG); 
} 

public void setColor(String newColor) { 
    invalidate(); 
    paintColor = Color.parseColor(newColor); 
    drawPaint.setColor(paintColor); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint); 
    canvas.drawPath(drawPath, drawPaint); 
} 

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 
    canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
    drawCanvas = new Canvas(canvasBitmap); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float eventX = event.getX(); 
    float eventY = event.getY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      drawPath.moveTo(eventX, eventY); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      drawPath.lineTo(eventX, eventY); 
      break; 
     case MotionEvent.ACTION_UP: 
      drawCanvas.drawPath(drawPath, drawPaint); 
      drawPath.reset(); 
      break; 
     default: 
      return false; 
    } 

    // Makes our view repaint and call onDraw 
    invalidate(); 
    return true; 
} 

public void setErase() { 
    canvasBitmap.eraseColor(Color.TRANSPARENT); 
    drawPath.reset(); 
    invalidate(); 
} 

public void startNew() { 
    drawCanvas.drawColor(0, PorterDuff.Mode.CLEAR); 
    invalidate(); 
} 

}

3) erstellen Objekt zeichnen

DrawingArea mDrawView = (DrawingArea) findViewById (R.id .Zeichnung);

Verwandte Themen