国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android曲線更圓滑的簽名畫板

2019-10-22 18:12:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Android開(kāi)發(fā)中,在自定義view中,使用Canvas的相應(yīng)操作,實(shí)現(xiàn)類似簽名的畫板,但有一個(gè)問(wèn)題則是,正常的Canvas操作可以用畫板對(duì)手機(jī)的滑動(dòng)進(jìn)行繪制,但是當(dāng)遇到一些圓滑曲線時(shí),會(huì)顯得不夠順滑,甚至有折角,這里可以使用二階beizer曲線來(lái)使得曲線更加圓滑,提升用戶體驗(yàn)。

定義一個(gè)自定義SignView,繼承自View,在里面定義四個(gè)變量:

private Path mPath;private Paint mPaint;private float mX;private float mY;

在構(gòu)造方法里對(duì)路徑和畫筆進(jìn)行初始化:

public SignView(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10);  mPath = new Path();}

在onDraw()中對(duì)canvas做操作,這里值得一提的是調(diào)用drawColor方法,不然最終如果保存為本地圖片的話,會(huì)使得背景為黑色,如果畫筆也選擇黑色的話,則會(huì)成一張全黑的圖片:

@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); canvas.drawPath(mPath, mPaint);}

接下來(lái)重寫onTouchEvent方法:

@Override public boolean onTouchEvent(MotionEvent event) {  switch (event.getAction()) {   case MotionEvent.ACTION_DOWN:    mX = event.getX();    mY = event.getY();    mPath.moveTo(mX, mY);    break;   case MotionEvent.ACTION_MOVE:    float x1 = event.getX();    float y1 = event.getY();    float cx = (x1 + mX) / 2;    float cy = (y1 + mY) / 2;    mPath.quadTo(mX, mY, cx, cy);    mX = x1;    mY = y1;    break;  }  invalidate();  return true; }

手指按下時(shí),取得按下的坐標(biāo),移動(dòng)的時(shí)候,得到當(dāng)前左邊,且取兩點(diǎn)中間的cx,cy作為beizer曲線的控制點(diǎn),然后調(diào)用quadTo方法繪制二階beizer曲線,進(jìn)行連線操作,最終則是調(diào)用invalidate方法進(jìn)行重繪。

這樣一個(gè)使連線更加圓滑的畫板控件簡(jiǎn)單實(shí)現(xiàn)了,如果需要保存為本地,或者bitmap對(duì)象,則需要做其他一些額外的操作了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 喀喇沁旗| 大埔县| 秦皇岛市| 北碚区| 平武县| 宁国市| 社旗县| 红桥区| 临朐县| 孟州市| 定日县| 灵山县| 清远市| 平江县| 富裕县| 什邡市| 九寨沟县| 孟津县| 竹山县| 望奎县| 富蕴县| 孟津县| 普兰县| 长兴县| 镇安县| 沅陵县| 墨脱县| 施甸县| 南安市| 衡阳市| 苍溪县| 舒城县| 海门市| 柳河县| 喀喇沁旗| 台山市| 赣榆县| 瑞昌市| 阳信县| 建水县| 德令哈市|