美文网首页
Android开发学习——Day28(综合实战:画板)

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

作者: 明天_ff | 来源:发表于2019-11-05 22:10 被阅读0次

    学习目的

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

    学习过程

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

    技术

    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(综合实战:画板)

          本文链接:https://www.haomeiwen.com/subject/jcscbctx.html