2 baidu 28752425 baidu_28752425 于 2017.09.11 11:27 提问

android中如何通过手指在屏幕上滑动来动态画出一条直线?

如题,我现在想要实现的效果是,手指在屏幕上滑动时能拖出一条从action down位置到手指当前位置的连线,在手指离开屏幕前,手指变化位置时直线终点跟着改变而起点始终保持为初始action down的位置,从而实现直线跟随手指变化长短和方向的效果,而当手指action up时,就在屏幕上显示action down到action up位置的一条连线。
请教各位熟悉android的朋友,上述效果应该怎么实现?刚做开发不久,在csdn里也没什么C币,悬赏5C币,希望大家帮帮忙,感激不尽!

3个回答

u011315960
u011315960   2017.09.12 11:02
已采纳

其实我觉得你的思路是很清晰的,完全可以自己去写,刚做开发多敲点代码加深对api的理解,我可以帮你提几个建议:
1、实现手指在屏幕滑动,你可以重写View的onTouch方法,在onTouch的MotionEvent参数,你可以得到当前用户操作的状态,例如DOWN,MOVE,UP。
2、绘制线条,你需要重写View的onDrow方法,通过Paint绘制目前的Down的位置和UP的位置之间的连线,这样你在onTouch中,MOVE的时候重绘View就可以了。
3、如果你希望可以保留之前的画线,那么我建议你可以尝试创建Bitmap来绘图,每一次都画在一张Bitmap上,这样之前你的就可以保留了。

整体的过程就是这样,我希望你能够自己去尝试写一下,其实没你想的那么难。

u011315960
u011315960 刚看到……其实我之前的想法和你的差不多,只不过我的想法是把一些划线画在一张bitmap上,例如list中不可能无限保存所有的划线,那我设置只保留10条,超出的部分画在一张bitmap上,这样在重绘的时候,同时画Bitmap和线条。不过这也算是优化的东西了把,你这个如果作为demo的话,已经是很不错了。
2 个月之前 回复
baidu_28752425
baidu_28752425 回复li504799868: 不好意思,这两天没登csdn,回复迟了~~关于保存之前的画线,每画一条线就将该条直线的起点和终点添加进一个list列表中,每次onDraw时从list中取数据重绘也可以实现。当然通过画在bitmap上来保留之前画线的方法,我也很乐意学习,所以如果你愿意提供这方面demo的话,就再好不过了,十分感谢~
2 个月之前 回复
u011315960
u011315960 如果有需要的话,我可以帮你实现这个demo作为参考,不过主要还是要靠你自己了。
2 个月之前 回复
u011315960
u011315960 发现错字了,是onDraw方法……
2 个月之前 回复
baidu_28752425
baidu_28752425 好的,对于创建bitmap绘图来保留之前画线的内容我再去了解一下,谢谢啦~
2 个月之前 回复
weixin_38613670
weixin_38613670   2017.09.11 14:46

同事分享过一次安卓锁屏的划线实现,思路就是围绕点来实现的, 初始点的位置标记,中间手指移动的时候,线是跟随状态,当遇到下一个目标点坐标的时候,就记录
具体实现代码你需要的话我可以去要一份,demo的代码给你参考一下

RottenWang
RottenWang   2017.09.14 14:11

Path.lineTo

Csdn user default icon
上传中...
上传图片
插入图片