我正在尝试用路径绘制可绘制的背景。但是我得到了一个我无法绘制的点,因为我需要接收背景的物体的大小。是否有一个函数来查找我将绘制的特定视图的大小?
public class CustomDrawableEditText extends Drawable{
private Context context;
public CustomDrawableEditText(Context context) {
// TODO Auto-generated constructor stub
this.context = context;
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
Path path = new Path();
Paint paint = new Paint();
path.moveTo(0, 0);
path.lineTo(10, 0);
path.moveTo(0, 0);
path.lineTo(0, Y);
path.lineTo(10, Y);
path.moveTo( X, 0);
path.lineTo( X-10, 0);
path.moveTo( X, 0);
path.lineTo( X, X);
path.lineTo( X-10, X);
paint.setColor(context.getResources().getColor(R.color.orange));
paint.setStrokeWidth(2);
paint.setStyle(Paint.Style.STROKE);
canvas.drawPath(path, paint);
}
private int getY() {
final Resources res = context.getResources();
final float scale = res.getDisplayMetrics().density;
return (int) (res.getDimension(R.dimen.dim4) * scale + 0.5f);
}
@Override
public int getOpacity() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setAlpha(int alpha) {
// TODO Auto-generated method stub
}
@Override
public void setColorFilter(ColorFilter cf) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:0)
要获得View的大小,您可以调用getWidth()
和getHeight()
。请注意,您可能也对getMeasuredWidth()
和getMeasuredHeight()
感兴趣。
确保在视图的布局过程之后将这些方法称为。
答案 1 :(得分:0)
调用Drawable.getBounds()
或Drawable.copyBounds(Rect rect)
方法。
这两种方法应该返回View
的范围(当View
的大小发生变化时,它会调用(应该调用)每个Drawable.setBounds
上的Drawable
方法它具有适当的参数值),其中View
希望绘制您的Drawable
。然后,您自己的自定义Drawable可以通过调用Drawable.getBounds()
或Drawable.copyBounds(Rect rect)
来检索此值。