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

Android曲線更圓滑的簽名畫板

 更新時(shí)間:2018年04月26日 11:42:43   作者:李, 泰愚  
這篇文章主要為大家詳細(xì)介紹了Android曲線更圓滑的簽名畫板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

接下來重寫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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kotlin協(xié)程到底是如何切換線程的

    Kotlin協(xié)程到底是如何切換線程的

    kotlin協(xié)程可以用同步方式寫異步代碼,自動(dòng)實(shí)現(xiàn)對(duì)線程切換的管理,本文主要給大家講解kotlin協(xié)程到底是怎么切換線程的,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • 詳解android在mob平臺(tái)實(shí)現(xiàn)qq登陸和分享

    詳解android在mob平臺(tái)實(shí)現(xiàn)qq登陸和分享

    這篇文章主要介紹了詳解android在mob平臺(tái)實(shí)現(xiàn)qq登陸和分享,對(duì)接入第三方平臺(tái)SDK感興趣的同學(xué)們,可以參考下
    2021-04-04
  • Android編程實(shí)現(xiàn)監(jiān)聽EditText變化的方法

    Android編程實(shí)現(xiàn)監(jiān)聽EditText變化的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)監(jiān)聽EditText變化的方法,涉及Android針對(duì)EditText的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android設(shè)置theme中可能遇到的坑

    Android設(shè)置theme中可能遇到的坑

    Theme是一套UI控件和Activity的樣式,下面這篇文章主要給大家介紹了關(guān)于Android設(shè)置theme中可能遇到的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • android 獲取手機(jī)GSM/CDMA信號(hào)信息,并獲得基站信息的方法

    android 獲取手機(jī)GSM/CDMA信號(hào)信息,并獲得基站信息的方法

    下面小編就為大家?guī)硪黄猘ndroid 獲取手機(jī)GSM/CDMA信號(hào)信息,并獲得基站信息的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • Flutter實(shí)現(xiàn)旋轉(zhuǎn)掃描效果

    Flutter實(shí)現(xiàn)旋轉(zhuǎn)掃描效果

    這篇文章主要介紹了通過Flutter RotationTransition實(shí)現(xiàn)雷達(dá)旋轉(zhuǎn)掃描的效果,文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以動(dòng)手試一試
    2022-01-01
  • 分享五種Android常用布局方式

    分享五種Android常用布局方式

    Android布局是應(yīng)用界面開發(fā)的重要一環(huán),在Android中,共有五種布局方式,分別是:FrameLayout(框架布 局),LinearLayout (線性布局),AbsoluteLayout(絕對(duì)布局),RelativeLayout(相對(duì)布局),TableLayout(表格布局),小編通過本文逐一給大家詳解
    2015-11-11
  • Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的全過程

    Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的全過程

    在使用flutter開發(fā)的過程中,需要根據(jù)不同的環(huán)境,不同的包名來打包,下面這篇文章主要給大家介紹了關(guān)于Flutter移動(dòng)端進(jìn)行多渠道打包發(fā)布的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • photoView實(shí)現(xiàn)圖片多點(diǎn)觸控效果

    photoView實(shí)現(xiàn)圖片多點(diǎn)觸控效果

    這篇文章主要為大家詳細(xì)介紹了photoView實(shí)現(xiàn)圖片多點(diǎn)觸控效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android開發(fā)之ProgressBar字體隨著進(jìn)度條的加載而滾動(dòng)

    Android開發(fā)之ProgressBar字體隨著進(jìn)度條的加載而滾動(dòng)

    這篇文章主要介紹了Android開發(fā)之ProgressBar字體隨著進(jìn)度條的加載而滾動(dòng),需要的朋友可以參考下
    2017-09-09

最新評(píng)論

辰溪县| 二连浩特市| 竹山县| 榕江县| 汉寿县| 井冈山市| 泽库县| 大同市| 林周县| 嘉禾县| 兰西县| 兰州市| 邵阳县| 扎赉特旗| 微博| 成都市| 九江县| 收藏| 双流县| 南投市| 清远市| 达拉特旗| 巴彦县| 丽江市| 临汾市| 云梦县| 称多县| 五指山市| 霍林郭勒市| 长武县| 临泉县| 苗栗县| 汝城县| 巧家县| 大连市| 金寨县| 衡阳市| 澄迈县| 南木林县| 淮安市| 来安县|