onDraw(Canvas canvas) 是用来绘制自定义view的,而 FrameLayout 是 android 的布局控件,canvas 并不具备绘制 FrameLayout 的 API,你可以从canvas的文档里查阅所有API:http://developer.android.com/reference/android/graphics/Canvas.html 如果你是想自定义一个FrameLayout,可以这样做: public class YourFrameLayout extends FrameLayout{ Paint mPaint; public YourFrameLayout(Context context, AttributeSet attrs) { super(context, attrs); } public YourFrameLayout(Context context) { super(context); // Paint类决定如何进行绘制操作。 // 其方法可指定绘制图形的特征,例如是否填充图形、使用什么字体绘制、线条是什么颜色等。 mPaint = new Paint(); mPaint.setColor(0x22ff0000); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); // Canvas类具有我们需要的所有绘制操作。 // 其方法可决定绘制的位置及图形,例如线条、圆形、字词、矩形等 canvas.drawRect(left, top, right, bottom, mPaint); ...... } } 如果你是想把一个Framelayout绘制在屏幕的某个位置,就应该用layout文件;或者通过代码new一个Framelayout,然后通过LayoutParams设置它的宽度和高度,再通过View.setX(float x)和setY()设置坐标。
onDraw(Canvas canvas)
是用来绘制自定义view的,而 FrameLayout 是 android 的布局控件,canvas 并不具备绘制 FrameLayout 的 API,你可以从canvas的文档里查阅所有API:http://developer.android.com/reference/android/graphics/Canvas.html
如果你是想自定义一个FrameLayout,可以这样做:
如果你是想把一个Framelayout绘制在屏幕的某个位置,就应该用layout文件;
或者通过代码new一个Framelayout,然后通过LayoutParams设置它的宽度和高度,再通过
View.setX(float x)
和setY()
设置坐标。