Android开发学习——Day28(综合实战:画板)

学习目的

学习开发一个较为全面的小项目。

学习过程

从头开始,分析考虑用户需求,一步一步实现画板的基本功能。

技术

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时,中间会涉及到很多数据信息的交流、回调,有的时候思路会很乱。不过多看几遍就能明白来龙去脉。学习了这么一段时间,我发现自己进步很多。并且明白了,只要自己肯去做,就一定会有所收获。

你可能感兴趣的:(Android开发学习——Day28(综合实战:画板))