Android自定义view贝塞尔曲线

贝塞尔曲线

以一个简单的贝塞尔曲线为例,二阶曲线原理

贝塞尔曲线很多功能都会用到,比如小火箭发射,再比如淘宝的购物车功能

所幸的是Android有封装好的贝塞尔曲线,我们直接拿过来用就可以了:

//二阶贝赛尔 public void quadTo(float x1, float y1, float x2, float y2) public void rQuadTo(float dx1, float dy1, float dx2, float dy2) //三阶贝赛尔 public void cubicTo(float x1, float y1, float x2, float y2,float x3, float y3) public void rCubicTo(float x1, float y1, float x2, float y2,float x3, float y3)

自定义view代码如下

public class MyView extends View {    private Point controlPoint = new Point(200, 200);    public MyView(Context context) {        super(context);    }    public MyView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Paint paint = new Paint();//        画笔设置描边        paint.setStyle(Paint.Style.STROKE);//        颜色        paint.setColor(Color.BLACK);//        描边宽度        paint.setStrokeWidth(10);//路径        Path path = new Path();//        moveTo 不会进行绘制,只用于移动移动画笔。        path.moveTo(100, 500);//绘制贝塞尔曲线,controlPoint.x, controlPoint.y控制点和700, 500终点坐标        path.quadTo(controlPoint.x, controlPoint.y, 700, 500);        //绘制路径        canvas.drawPath(path, paint);        //绘制辅助点        canvas.drawPoint(controlPoint.x,controlPoint.y,paint);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()) {            case MotionEvent.ACTION_MOVE:                controlPoint.x = (int) event.getX();                controlPoint.y = (int) event.getY();//             invalidate();重绘 刷新                invalidate();                break;        }        return true;    }}

更多相关文章

  1. android camera 拍照加图片处理
  2. Android(安卓)OpenCV(四):绘制几何图形
  3. Android视图加载流程(5)之View的详细绘制流程Layout
  4. Android视图加载流程(6)之View的详细绘制流程Draw
  5. android 关于paint的设置
  6. 1、重写TextView的onDraw方法
  7. android音乐播放器开发 SweetMusicPlayer 智能匹配本地歌词
  8. ListView属性及方法android
  9. 一.GLSurfaceView介绍

随机推荐

  1. Android(安卓)增量更新实例(Smart App Upd
  2. Android(安卓)-- ContentProvider
  3. Android(安卓)数据存储之SQLite数据库
  4. Retrofit简单使用(Kotlin)
  5. 转:Android(安卓)学习笔记3(控件)
  6. Android自带的TabLayout实现滑动翻页效果
  7. Android客户端与服务端通信乱码问题的解
  8. 04.Android的数据存储操作
  9. [置顶] 我的Android进阶之旅------>andro
  10. android中开机自动运行程序