许舰
摘要:在日常生活中,智能手机用户通常会对手机中的图片进行一些二次编辑操作,例如在图片中通过划线、划圈标注重点等,进而通过社交网络分享编辑之后的图片。随着智能手机的普及以及社交网络的蓬勃发展,手机上的图片二次编辑有着很强的实用价值。因此通过设计并实现Android平台上的自定义绘图组件,分析一些图片二次编辑操作的实现原理,可以为读者提供实现这类软件的思路。
关键词:图片;绘图组件;自定义组件;Android;二次编辑
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)10-0095-04
Abstract:In daily life, smart phone users usually perform some secondary editing operations on the pictures in the mobile phone, for example, by marking and highlighting circles in pictures, and then sharing the edited pictures through a social network. With the popularization of smart phones and the vigorous development of social networks, the secondary editing of pictures on mobile phones has a strong practical value. Therefore, by designing and implementing a custom painting view on the Android platform and analyzing the implementation principle of some secondary editing operations of the picture, the reader can be provided with the idea of implementing such software.
Key words:image; painting view; custom view; android; secondary editing
1 背景
在日常生活中,智能手機用户通常会对手机中的图片进行一些二次编辑操作,例如在图片中通过划线、划圈标注重点等,进而通过社交网络分享编辑之后的图片。传统的简单图片二次编辑包括划线、划圈、旋转、撤销、清屏这些操作。其中划线、划圈为标记操作,即为使用带有底色的画笔在图片中标记出重点部分;旋转即为以图片的中心点为旋转中心,对图片进行90度、180度、270度旋转,进而辅助划线、划圈等标记操作;撤销即为撤销上一步的标记操作;清屏即为清除当前所有的标记操作。上诉这些图片二次编辑功能想必读者都有接触并且亲身操作过,那么这些手机上的图片二次编辑操作是如何实现的呢?笔者通过自己在Android平台上设计自定义绘图组件[1-5]、实现了这些图片二次编辑操作,从而为读者提供设计实现这类软件的思路以及方法。
2 Android控件重绘
在Android平台上,实现一个自定义绘图控件一般分为以下两步:
1)定义一个绘图控件类继承View类;
2)在定义的绘图控件类中重载onDraw,onTouchEvent等方法,在这些方法中实现对图片进行二次操作的逻辑。
该章将介绍与Android自定义绘图控件实现相关的控件重绘方面的内容,使读者对Android的控件重绘有一个大概的了解。
2.1 Canvas绘图
Canvas类对于Android控件重绘来说是至关重要的。Canvas有画布的意思,正如它的名字一样,Canvas类中定义了大量与绘图相关的方法,是一个绘图操作集合。例如调用Canvas类中的drawLine方法可以绘制直线;调用drawCircle方法则可以绘制一个圆。
因此通过控件onDraw方法传递进来的Canvas参数,我们就可以实现在自定义控件上绘制各种图形以及图案。另外Canvas还有一个坐标系的概念,例如在onDraw函数中,Canvas参数的坐标系与手机屏幕是对应的,如图1所示
3.3 绘图流程设计
绘图操作需要以Canvas坐标转化以及监听Android 的Touch事件为基础,因此控件的绘图流程描述如下:
1)将图片的Bitmap对象载入绘图控件,做好Canvas坐标系调整,使图片完整、居中的显示在控件上。
4 结束语
在智能手机如此普及、社交网络如此发达的今天,手机上的图片二次编辑有很强的实用价值以及很广的应用场景。该文通过设计实现Android平台上的自定义绘图控件,分析了与绘图控件相关的图片二次编辑操作的原理,为读者提供了设计实现这类软件的思路。
参考文献:
[1] 赵晓影. Android应用开发中的UI设计[J]. 劳动保障世界:理论版, 2013(12): 111.
[2] 王建功. 基于Android的自定义控件设计[J]. 德州学院学报, 2015, 31(2): 62-65.
[3] 王会进, 方锦亮. 基于JAVA的自定义控件应用技术研究[J]. 微型机与应用, 2005(5): 13-16.
[4] 赵亮, 张维. 基于Android技术的界面设计与研究[J]. 电脑知识与技术, 2009, 5(29): 8183-8185.
[5] 张香倩, 黄林生, 陈阳德. 基于Android的自定义媒体播放控件设计与实现[J]. 软件导刊, 2016, 15(5): 79-81.
[6] 张晗, 褚治广. 基于Android平台的手势识别技术设计与应用[J]. 辽宁工业大学学报:自然科学版, 2013, 33(4): 238-241.
[7] 马建平, 潘俊卿, 陈渤. Android智能手机自适应手势识别方法[J]. 小型微型计算机系统, 2013, 34(7): 1703-1707.
[8] 张晗, 褚治广. 基于Android平台的手势识别技术设计与应用[J]. 辽宁工业大学学报:自然科学版, 2013, 33(4): 238-241.