I'm attempting to draw a rounded rectangle using RectF and canvas.drawRoundRect(). Please see my code below:
package com.example.test;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.RelativeLayout;
import android.graphics.RectF;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create main RL params
RelativeLayout.LayoutParams rlMainlayoutParams
= new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
// Create main relative layout
RelativeLayout rlMain = new RelativeLayout(this);
rlMain.setLayoutParams(rlMainlayoutParams);
//rlMain.setBackgroundResource(R.drawable.bgndlogin);
rlMain.setBackgroundColor(Color.WHITE);
RectF rectf = new RectF(200, 400, 200, 400);
CustomRectangle customRectangle = new CustomRectangle(this, rectf, 5, 5, "#FFFF00");
//
rlMain.addView(customRectangle);
setContentView(rlMain);
}
//!< Draw the log in rectangle shaped panel
public class CustomRectangle extends View {
Paint paint;
float left_side, top_side;
String color;
RectF rectf;
//!< Constructor for the log in rectangle shaped panel
public CustomRectangle(Context context, RectF rectf, float left_side, float top_side, String color) {
super(context);
this.rectf = rectf;
this.left_side= left_side;
this.top_side = top_side;
this.color = color;
}
//!< Implement to draw the rectangle
@Override
public void onDraw(Canvas canvas) {
paint = new Paint();
paint.setColor(Color.parseColor(color));
paint.setStrokeWidth(3);
//paint.setAlpha(61);
canvas.drawRoundRect(rectf, left_side, top_side, paint);
}
}
}
The program runs but nothing gets drawn i.e. I just get my white background screen. Any ideas as to why?
Note: I'm creating my relative layout programatically as opposed to using XML for scaling purposes.
Actually here your RectF representing Point not Rectangle, that's why you are unable to see Rect...
RectF rectF = new RectF(left, top, right, bottom);
and here RectF is
RectF rectf = new RectF(200, 400, 200, 400); // representing Point
here left = right = 200 and top = bottom = 400 which represents a Point
if you want to draw a Rect of width = 200 and height = 400, then your RectF should be
RectF rectf = new RectF(0, 0, 200, 400);
and for width = 400 and height = 200, RectF should be
RectF rectf = new RectF(0, 0, 400, 200);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With