Reputation: 263
Is there an easy way to draw rectangles on a canvas and display it in an activity like a TextView?
I tried to draw my rectangle like this:
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.MAGENTA);
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Rect locationrect = new Rect(10, 10, 200, 100);
c.drawRect(locationrect, paint);
View locationpic = (View)findViewById(R.id.locationview);
locationpic.draw(c);
in my xml:
<View
android:id="@+id/locationview"
android:layout_width="520dp"
android:layout_height="489dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="220dp" />
This is apparently not working (it doesn't crash but rectangle is not displayed).. any help would be appreciated! Thanks!
Upvotes: 1
Views: 710
Reputation: 6166
Create a Java file and write this:
package com.samplecanvas;
import java.util.ArrayList;
import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout;
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View;
public class SampleCanvasActivity extends View {
vPaint paint = new Paint();
public SampleCanvasActivity(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(130, 130, 180, 180, paint);
paint.setStrokeWidth(0);
paint.setColor(Color.CYAN);
canvas.drawRect(133, 160, 177, 177, paint );
paint.setColor(Color.YELLOW);
canvas.drawRect(133, 133, 177, 160, paint );
}
}
Use this file in ur xml
Like this.
<com.samplecanvas.SampleCanvasActivity
android:id="@+id/widthView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="150dp"
/>
Upvotes: 1