最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android自定義view貝塞爾曲線

 更新時(shí)間:2022年06月29日 14:35:45   作者:王三狗  
這篇文章主要為大家詳細(xì)介紹了Android自定義view貝塞爾曲線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android自定義view貝塞爾曲線,供大家參考,具體內(nèi)容如下

貝塞爾曲線

以一個(gè)簡單的貝塞爾曲線為例,二階曲線原理

貝塞爾曲線很多功能都會用到,比如小火箭發(fā)射,再比如淘寶的購物車功能

所幸的是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();
// ? ? ? ?畫筆設(shè)置描邊
? ? ? ? paint.setStyle(Paint.Style.STROKE);
// ? ? ? ?顏色
? ? ? ? paint.setColor(Color.BLACK);
// ? ? ? ?描邊寬度
? ? ? ? paint.setStrokeWidth(10);
//路徑
? ? ? ? Path path = new Path();
// ? ? ? ?moveTo 不會進(jìn)行繪制,只用于移動(dòng)移動(dòng)畫筆。
? ? ? ? path.moveTo(100, 500);
//繪制貝塞爾曲線,controlPoint.x, controlPoint.y控制點(diǎn)和700, 500終點(diǎn)坐標(biāo)
? ? ? ? path.quadTo(controlPoint.x, controlPoint.y, 700, 500);
? ? ? ? //繪制路徑
? ? ? ? canvas.drawPath(path, paint);
? ? ? ? //繪制輔助點(diǎn)
? ? ? ? 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;
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

乐业县| 革吉县| 旬阳县| 南岸区| 密山市| 龙川县| 玉屏| 舞钢市| 永顺县| 峨眉山市| 清丰县| 鹤庆县| 尤溪县| 静乐县| 霍城县| 郧西县| 延长县| 交城县| 兴和县| 读书| 太仆寺旗| 阿鲁科尔沁旗| 石楼县| 尉犁县| 长汀县| 家居| 益阳市| 尚义县| 象山县| 新和县| 蚌埠市| 武安市| 华安县| 湘潭市| 清镇市| 前郭尔| 阳原县| 张掖市| 彭山县| 镇原县| 合肥市|