APP学习7(自定义view)
1. 自定义view
当系统控件不能满足需求是,需要自定义控件。
自定义View常用的3个方法:
onMeasure()方法:测量尺寸。
onDraw()方法:绘制图像。
onLayout()方法:指定布局中控件的位置。
代码及使用:
额外建立一个类
Circle.java
package com.example.myapp; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import androidx.annotation.Nullable; public class Circle extends View { public Circle(Context context) { super(context); } public Circle(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public Circle(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public Circle(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int r=50; int centerX = getLeft()+r; int centerY = getTop()+r; Paint p=new Paint(); p.setColor(Color.BLUE); canvas.drawCircle(centerX,centerY,r,p); } }
xml文件中使用:
<com.example.myapp.Circle android:layout_width="200dp" android:layout_height="200dp"> </com.example.myapp.Circle>
这里注意,如果xml使用的时候这样子写回直接覆盖到后面的内容。
<com.example.myapp.Circle android:layout_width="wrap_content" android:layout_height="wrap_content"> </com.example.myapp.Circle>