安卓Android---自定义view
android的自定义view
·
通常开发android都是使用view的子类,但是实际开发还会有满足不了我们的时候,所以就要来学习如何自定义view。
最简单粗暴的自定义方式:
1.创建一个类,继承view类。
2.重写构造方法。
如下:
这里注意一下:Customview(Context context, @Nullable AttributeSet attrs) 这个方法在xml中引入自定义控件时,使用该构造函数!!
自定义view三种方法:1.OnMeasure 2.OnDraw 3.OnLayout
在自己创建的类中 : 右键--->Generate--->Override--->找到OnMeasure /OnDraw/OnLayout
这里举例OnDraw
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 Customview extends View {
public Customview(Context context) {
super(context);
}
//在xml中引入自定义控件时,使用该构造函数
public Customview(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int r = getMeasuredWidth() / 2;
int centerX = getLeft() + r;
int centerY = getTop()+ r;
Paint paint = new Paint();
paint.setColor(Color.RED);
//开始绘制
canvas.drawCircle(centerX, centerY, r, paint);
}
}
在Android坐标系中,以屏幕左上角作为原点,这个原点向右是X轴的正轴,向下是Y轴正轴。如下所示:
图片来自菜鸟教程
大家可以结合结果进行学习:
下面是对应的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp">
<com.example.customview.Customview //自定义类所在的包.类名
android:layout_width="200dp"
android:layout_height="200dp"/>
</RelativeLayout>
更多推荐
已为社区贡献1条内容
所有评论(0)