Android自定義view貝塞爾曲線(xiàn)
本文實(shí)例為大家分享了Android自定義view貝塞爾曲線(xiàn),供大家參考,具體內(nèi)容如下
貝塞爾曲線(xiàn)
以一個(gè)簡(jiǎn)單的貝塞爾曲線(xiàn)為例,二階曲線(xiàn)原理
貝塞爾曲線(xiàn)很多功能都會(huì)用到,比如小火箭發(fā)射,再比如淘寶的購(gòu)物車(chē)功能
所幸的是Android有封裝好的貝塞爾曲線(xiàn),我們直接拿過(guò)來(lái)用就可以了:
//二階貝賽爾? 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(); // ? ? ? ?畫(huà)筆設(shè)置描邊 ? ? ? ? paint.setStyle(Paint.Style.STROKE); // ? ? ? ?顏色 ? ? ? ? paint.setColor(Color.BLACK); // ? ? ? ?描邊寬度 ? ? ? ? paint.setStrokeWidth(10); //路徑 ? ? ? ? Path path = new Path(); // ? ? ? ?moveTo 不會(huì)進(jìn)行繪制,只用于移動(dòng)移動(dòng)畫(huà)筆。 ? ? ? ? path.moveTo(100, 500); //繪制貝塞爾曲線(xiàn),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; ? ? } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android自定義View繪制貝塞爾曲線(xiàn)實(shí)現(xiàn)流程
- Android使用貝塞爾曲線(xiàn)畫(huà)心形
- Android自定義View繪制貝塞爾曲線(xiàn)的方法
- Android貝塞爾曲線(xiàn)實(shí)現(xiàn)加入購(gòu)物車(chē)拋物線(xiàn)動(dòng)畫(huà)
- Android通過(guò)交互實(shí)現(xiàn)貝塞爾曲線(xiàn)的繪制
- Android?貝塞爾曲線(xiàn)繪制一個(gè)波浪球
- Android利用貝塞爾曲線(xiàn)繪制動(dòng)畫(huà)的示例代碼
- Android自定義View繪制貝塞爾曲線(xiàn)中小紅點(diǎn)的方法
相關(guān)文章
Android開(kāi)發(fā)實(shí)現(xiàn)圖片的上傳下載
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)實(shí)現(xiàn)圖片的上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09RadioButton實(shí)現(xiàn)選擇后可取消選擇
這篇文章主要為大家詳細(xì)介紹了RadioButton實(shí)現(xiàn)選擇后可取消選擇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Android性能優(yōu)化之plt?hook與native線(xiàn)程監(jiān)控詳解
這篇文章主要為大家介紹了Android性能優(yōu)化之plt?hook與native線(xiàn)程監(jiān)控詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09在A(yíng)ndroid項(xiàng)目中使用AspectJ的方法
這篇文章主要介紹了在A(yíng)ndroid項(xiàng)目中使用AspectJ的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04android中實(shí)現(xiàn)editext搜索完成自動(dòng)關(guān)閉軟鍵盤(pán)
在A(yíng)ndroid應(yīng)用開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要在EditText中輸入內(nèi)容,并通過(guò)搜索按鈕進(jìn)行搜索的場(chǎng)景,通常情況下,當(dāng)用戶(hù)點(diǎn)擊搜索按鈕后,我們希望關(guān)閉軟鍵盤(pán)以提供更好的用戶(hù)體驗(yàn),本文將介紹如何在A(yíng)ndroid中實(shí)現(xiàn)EditText搜索完成后自動(dòng)關(guān)閉軟鍵盤(pán)的功能2023-10-10用Flutter做桌上彈球(繪圖(Canvas&CustomPaint)API)
這篇文章主要介紹了用Flutter做桌上彈球 聊聊繪圖(Canvas&CustomPaint)API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Android使用自定義alertdialog實(shí)現(xiàn)確認(rèn)退出按鈕
本文通過(guò)實(shí)例代碼給大家詳解Android使用自定義alertdialog實(shí)現(xiàn)確認(rèn)退出按鈕,對(duì)alertdialog退出按鈕相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01Flutter數(shù)字切換動(dòng)畫(huà)實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了Flutter數(shù)字切換動(dòng)畫(huà)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08