任何view都有觸控事件,經常在自定義控制項時重寫setontouchlistener本篇分為三個等級:一覽圖:本篇通過手繪來講述這個知識點
直線曲線
筆觸
level1:基礎實現
在activity中通過乙個全屏的bitmap建立的canvas繪製1.成員變數為imageview新增觸控事件監聽。
imageview midivshow;
float downx = 0;
float downy = 0;
float upx = 0;
float upy = 0;
private canvas mcanvas;
private paint mpaint;
2.建立畫布//獲取螢幕尺寸
point point = new point();
getwindowmanager().getdefaultdisplay().getsize(point);
//建立乙個和螢幕一樣大的bitmap
bitmap bitmap = bitmap.createbitmap(point.x, point.y, bitmap.config.argb_8888);
//建立canvas物件
mcanvas = new canvas(bitmap);
mpaint = new paint(paint.anti_alias_flag);
mpaint.setstrokewidth(10);
mpaint.setcolor(color.red);
//將bitmap用imageview展示
midivshow.setimagebitmap(bitmap);
3.監聽事件midivshow.setontouchlistener((v, event) ->
return true;
});}
公升級版:lever2
});再公升級版:lever3
筆觸根據繪製的速度動態改變畫筆粗細private long lasttimestamp = 0l;//最後一次的時間戳
拓展midivshow.setontouchlistener((view, event) ->
mcanvas.drawline(downx, downy, movingx, movingy, mpaint);
midivshow.invalidate();
downx = movingx;
downy = movingy;
lasttimestamp = curtimestamp;//更新時間
movepos.add(new pointf(event.getx(), event.gety()));
break;
}return true;
});
1.其中可以改變求寬度的等式實現不同的筆觸:如
2.在上繪畫
//原型
bitmap bitmap = bitmapfactory.decoderesource(getresources(), r.mipmap.iv_500x400);
//副本
bitmap mnewbitmap = bitmap.createbitmap(bitmap.getwidth(), bitmap.getheight(), bitmap.getconfig());
//用副本生成canvas
mcanvas = new canvas(mnewbitmap);
mpaint = new paint(paint.anti_alias_flag);
mpaint.setstrokecap(paint.cap.round);//直線圓頭
mcanvas.drawbitmap(bitmap, new matrix(), mpaint);
mpaint.setstrokewidth(10);
mpaint.setcolor(color.parsecolor("#88164be6"));
//設定副本到imageview
拓展2.png
後記:捷文規範
1.本文成長記錄及勘誤表
專案原始碼
日期備註
v0.1--無
2018-10-30
android觸控事件實現筆觸畫布
2.更多關於我
筆名qq
愛好張風捷特烈
1981462002
zdl1994328
語言我的github
我的csdn
個人**
3.宣告
android觸控語音事件
android中的各種事件是由各種不同的 來完成,比如按鍵事件是由onclicklistener實現監聽,觸控是由ontouchlistener實現監聽的。首先設定監聽,然後傳入要監聽的事件 public class touch913mainactivity extends activity tv....
關於android 的觸控事件
android 觸控motionevent 事件 motionevent 事件物件 一般情況下是在view 的ontouchevent 方法中處理motionevent 事件物件的 1 首先需要獲事件的型別 可以通過getaction android2.2之後加入多點觸控支援後 使用getactio...
Android觸控事件部分細節
今天,用到了乙個可在水平方向滑動listview的item的控制項,是github上的開源控制項,但是用起來總感覺不太好用,水平滑時有時滑不動,因為listview本身是有上下滑動功能的,當我們的手在滑動的時候,水平滑動的同時也有垂直滑動,如果垂直滑動的距離大於水平滑動的距離,則listview會把...