Android自定义View实现心形图案

 更新时间:2021年09月27日 15:39:10   作者:_万能的博哥  
这篇文章主要为大家详细介绍了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自定义顶部导航栏控件实例代码

    Android自定义顶部导航栏控件实例代码

    这篇文章主要介绍了Android自定义顶部导航栏控件实例代码,需要的朋友可以参考下
    2017-12-12
  • Android adb工具使用教程及安装问题

    Android adb工具使用教程及安装问题

    安卓调试桥是一种可以用来操作手机设备或模拟器的命令行工具,它是 Android 开发/测试人员不可替代的强大工具,它允许你与连接的Android设备进行通信,本文给大家介绍Android adb工具使用教程,感兴趣的朋友一起看看吧
    2025-04-04
  • Android DownloadProvider 源码详解

    Android DownloadProvider 源码详解

    这篇文章主要介绍了Android DownloadProvider 源码详解的相关资料,需要的朋友可以参考下
    2016-11-11
  • Android 混淆代码详解及实例

    Android 混淆代码详解及实例

    本文主要介绍Android 混淆代码的资料,这里整理了详细资料及代码实例,有需要做Android 混淆代码的朋友可以参考下
    2016-09-09
  • Android开发自学路线图

    Android开发自学路线图

    这篇文章主要介绍了Android开发自学路线图,本文讲解的路线图分为JAVA、Android基础、Web基础、Android项目4部份,是一个入门级学习路线图,需要的朋友可以参考下
    2015-04-04
  • Android获取经纬度计算距离介绍

    Android获取经纬度计算距离介绍

    Android提供LocationManager和Location,可以方便的获得经纬度、海拔等位置。使用LocationManager来获得位置管理类,从而可以获得历史GPS信息以及位置变化的监听注册;使用Location来获得具体的位置信息
    2014-01-01
  • Android中Handler、Thread、HandlerThread三者的区别

    Android中Handler、Thread、HandlerThread三者的区别

    本文主要介绍了Android中Handler、Thread、HandlerThread三者的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Android 属性动画原理与DataBinding

    Android 属性动画原理与DataBinding

    这篇文章主要介绍了Android 属性动画原理与DataBinding的相关资料,需要的朋友可以参考下
    2017-04-04
  • 详解Android中实现ListView左右滑动删除条目的方法

    详解Android中实现ListView左右滑动删除条目的方法

    这篇文章主要介绍了Android中实现ListView左右滑动删除条目的方法,文中分别展示了通过Scroller和NineOldAndroids来实现的例子,需要的朋友可以参考下
    2016-04-04
  • Android中外接键盘的检测的实现

    Android中外接键盘的检测的实现

    这篇文章主要介绍了Android中外接键盘的检测的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论