Android自定义View实现心形图案

本文实例为大家分享了Android自定义View实现心形的具体代码,供大家参考,具体内容如下

通过继承View实现的❤形

在绘制心形需要Path类中的两个重要方法分别是:moveTo、cubicTo

moveTo 不会进行绘制,只用于移动移动画笔。

lineTo 用于进行直线绘制。

quadTo 用于绘制圆滑曲线,即贝塞尔曲线。

cubicTo 同样是用来实现贝塞尔曲线的。

具体实现:

public class HeartView extends View {

private int mMeasureWidth;

private int mWidthMode;

private int mMeasureHeight;

private int mHeightMode;

private Paint paint;

public HeartView(Context context) {

super(context);

}

public HeartView(Context context, AttributeSet attrs) {

super(context, attrs);

paint = new Paint();//实例画笔

paint.setAntiAlias(true);//抗锯齿

paint.setStrokeWidth(2);//画笔宽度

paint.setColor(Color.RED);//画笔颜色

paint.setStyle(Paint.Style.FILL);//画笔样式

}

/**

* 测量

*/

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

mWidthMode = MeasureSpec.getMode(widthMeasureSpec);

mHeightMode = MeasureSpec.getMode(heightMeasureSpec);

mMeasureWidth = MeasureSpec.getSize(widthMeasureSpec);

mMeasureHeight = MeasureSpec.getSize(heightMeasureSpec);

if (mWidthMode == MeasureSpec.AT_MOST && mHeightMode == MeasureSpec.AT_MOST) {

setMeasuredDimension(200, 200);

} else if (mWidthMode == MeasureSpec.AT_MOST) {

setMeasuredDimension(200, mMeasureHeight);

} else if (mHeightMode == MeasureSpec.AT_MOST) {

setMeasuredDimension(mMeasureWidth, 200);

} else {

setMeasuredDimension(mMeasureWidth, mMeasureHeight);

}

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

int width = getWidth();//获取屏幕宽

int height = getHeight();//获取屏幕高

/**

* 绘制心形

*/

//左半面

Path path = new Path();

path.moveTo(width / 2, height / 4);

path.cubicTo((width * 6) / 7, height / 9, (width * 12) / 13, (height * 2) / 5, width / 2, (height * 7) / 12);

canvas.drawPath(path, paint);

//右半面

Path path2 = new Path();

path2.moveTo(width / 2, height / 4);

path2.cubicTo(width / 7, height / 9, width / 13, (height * 2) / 5, width / 2, (height * 7) / 12);

canvas.drawPath(path2, paint);

}

}

在布局中引入一下

<com.xxb.cache.weight.HeartView

android:layout_width="match_parent"

android:layout_height="match_parent" />

实现效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 Android自定义View实现心形图案 的全部内容, 来源链接: utcz.com/p/243969.html

回到顶部