android 利用path 實現手寫板的手寫效果
程式碼其實比較簡單,這種需求一般出現在相簿軟體裡面,可以讓使用者,觸控來在圖片上面寫字,畫圈圈之類的。反正就是記錄觸控軌跡吧。
public class TouchView extends View {
private float currentX;
private float currentY;
private Paint paint;
private Path path;
public TouchView(Context context) {
super(context);
}
public TouchView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public TouchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public TouchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(getResources().getDimension(R.dimen.paint_width));
paint.setStrokeCap(Paint.Cap.ROUND);
path = new Path();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
currentX = event.getX();
currentY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(currentX, currentY);
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
path.lineTo(currentX, currentY);
break;
}
postInvalidate();
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
}
程式碼這就行了,比較簡單。效果類似下面這種:
不要在意圖片和大紅背景色
需要注意的地方:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(currentX, currentY); // 這裡是 moveTo
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
path.lineTo(currentX, currentY); // 這裡是 lineTo
break;
}
沒有了。
相關文章
- 手寫AOP實現過程
- 手寫IOC實現過程
- JS手寫狀態管理的實現JS
- 對HashMap的思考及手寫實現HashMap
- 用原生js手寫實現promiseJSPromise
- 小程式實現手寫簽名
- 手寫一個jsonp實現JSON
- Android手寫籤批功能實現(適配Android6Android
- canvas 塗鴉畫板,支援筆寫、手寫、滑鼠繪圖Canvas繪圖
- 純手寫實現JDK動態代理JDK
- 【肥朝】如何手寫實現簡易的Dubbo?
- 使用TensorFlow實現手寫識別(Softmax)
- 手寫系列-實現一個鉑金段位的 ReactReact
- 手寫實現滿足 Promise/A+ 規範的 PromisePromise
- 從零手寫實現 tomcat-03-基本的 socket 實現Tomcat
- 【微信小程式canvas】實現小程式手寫板使用者簽名(附程式碼)微信小程式Canvas
- 手寫new
- 手寫 PromisePromise
- 手寫MVVMMVVM
- 手寫bind
- 手寫CountDownLatchCountDownLatch
- 手寫PromisePromise
- 手寫call、apply、bind實現及詳解APP
- 一步一步實現手寫PromisePromise
- 動手編寫—動態陣列(Java實現)陣列Java
- 手寫程式語言-實現運算子過載
- ProxySQL實現Mysql讀寫分離 - 部署手冊MySql
- 程式碼實現(機器學習識別手寫數字)機器學習
- 從零手寫實現 nginx-27-return 指令Nginx
- 從零手寫實現 nginx-21-modules 模組Nginx
- 手寫Android網路框架——CatHttp(一)Android框架HTTP
- 手寫Android網路框架——CatHttp(二)Android框架HTTP
- [手寫系列] 帶你實現一個簡單的PromisePromise
- 『手寫Mybatis』實現對映器的註冊和使用MyBatis
- javascript實現文字拼寫動畫效果JavaScript動畫
- 手寫面試題面試題
- 手寫 SpringSpring
- 手寫vue路由Vue路由