学习目的
学习开发一个较为全面的小项目。
学习过程
从头开始,分析考虑用户需求,一步一步实现画板的基本功能。
技术
1.把握代码时机
注意系统自调用方法的顺序,避免出现使用某对象的属性时,值为空。(说明值的传入在使用之后了)
2.布局方式
基本使用约束布局,也与线性布局嵌套。
3.绘制控件
实现的某些功能控件需要自己绘制,具体的操作可以移步至本人Android开发学习Day26,Day27的文章。
我们先来看看实现效果:
待更新...
具体的实现过程如下:
一、布局方式
1)整体分为两大布局块:上部分——调节字体条、画板和颜色;下部分——操作按钮
设计分析--布局方式2)主要采用约束布局,因为不好确定某些控件的具体大小;兼有线性布局:
设计分析--控件布局一 设计分析--控件布局二3)横竖屏切换:
注意:在AndroidMainfest.xml文件中设置activity属性:
android:configChanges=“orientation|keyboard|keyboardHidden|screenSize”
以保证在画完线条之后横竖屏切换时数据不会丢失。
实现效果--竖屏 实现效果--横屏二、自定义控件:滑动条
1)xml配置
代码实现--xml配置2)初始化画笔
代码实现--初始化画笔3)绘制
屏幕为横屏时的滑动条:
代码实现--点线绘制(横)屏幕为竖着时是类似的,改变对应的值即可:
代码实现--点线绘制(竖)注意:区分横竖屏的不同,计算触摸点,使实现滑动条的效果。
4)通过点触、拖动来改变滑动条
代码实现--滑动条的改变改变操作的实现是通过接口信息回调实现的:
1>创建一个接口,定义抽象方法
代码实现--创建接口2>创建一个对象监听变化
代码实现--创建监听者set方法外部调用,传入一个监听对象:
代码实现--实现set方法3>信息的回调处理
代码实现--信息处理4>主调函数中实现接口
代码实现--实现接口Ps:上述数据的回调操作设置画笔线条的粗细实现思路是这样的。
首先,程序运行到主调函数中,设置Slider控件的监听者,创建一个匿名对象,然后将新创建的对象传入Slider类中;
接着,在Slider类中,通过点触事件调用callback方法;
而后,在callback方法中,对信息进行处理后(通过小圆点的位置得出进度),再计算出画笔应设的粗细后将值设置;
最后,这个值传入主调函数中,实现抽象方法,设置线条粗细。
三、自定义控件:画板
1.监听点按事件,绘制线条
代码实现--绘画注意到上述绘制的线条信息全部由两个数组保存了,这是为了之后的撤销等操作。
2.创建保存线条信息的数组
代码实现--保存线条将线条的信息保存好之后,遍历数组就可以得到图形了。
3.得到图形
代码实现--得到图形得到图形后,可以进行相应的一些操作。
4.橡皮擦、撤销、返回、清空、换色和保存操作
待更新...
四、颜色板和操作按钮
颜色版和操作按钮本质上就是在一个线性布局下的若干个按钮
代码实现--颜色板 代码实现--操作按钮要注意的是,每一个按钮都添加了onClick属性,然后再在对应的类中写相关代码就可以了。
感悟
继手势解锁实战后,终于又做了一个复杂度和完整度比较高的实战。在这个过程中,自己对以往了一些知识有了一个回顾,也有了一个更深的理解,比如实现滑动条的数据回调。还体会到了在开发一个较为完整,有较强功能需求的APP时,中间会涉及到很多数据信息的交流、回调,有的时候思路会很乱。不过多看几遍就能明白来龙去脉。学习了这么一段时间,我发现自己进步很多。并且明白了,只要自己肯去做,就一定会有所收获。
网友评论