Android图片编辑器实践指南-1.简介和环境搭建

本文出自博客Scott_S CSDN博客,如需转载请标明出处,尊重原创谢谢
博客地址:https://blog.csdn.net/Scott_S/article/details/83617393

1.1功能简介

本系列文章是阐述如何开发出一个Android图片编辑器,并在开发过程中阐述图像处理相关的一系列知识。

整个app的大致功能包含如下:**选择图片、预览图片、图片编辑-增强、图片编辑-涂鸦、图片编辑-马赛克、图片编辑-文字、图片编辑-表情、图片编辑-简易滤镜、图片编辑-选择裁剪、图片编辑-拼图、图片编辑-设为壁纸,**下面具体介绍:

选择图片会包括如何从系统选择图片,或者选择视频,并扩展到根据不同的目录选择不同的图片。预览图片只是简单的支持图片的放大,缩小,移动。

增强功能会涉及图片的基本属性,亮度,色度,饱和度等知识介绍,并讲述如何调节一个图片的基本属性,更进一步会介绍锐度,阴影等功能。

涂鸦就是简单的画笔涂鸦;马赛克包括普通马赛克,模糊,纹理马赛克等;文字就是添加文字;表情是添加表情;简易滤镜包括图片的黑白,红,蓝等滤镜;选择裁剪,裁剪相关图片;拼图可选择不同图片进行拼图,也可选择相应模版进行(九宫格,心形图等),设为壁纸设置到手机桌面。

本系列文章,主要注重实践,会在涉及到相关知识的时候进行相应的补充说明,如果对相关知识不懂,可查看列出的参考链接,或者直接网上进行搜索。

本系列文章会以代码的方式手把手的呈现,基本按照顺序读到最后,自己可产出一个图片编辑器。

1.2准备工具

1.AndroidStudio
2.图片库Fresco
3.ButterKnife
4.Java开发语言

我不会接入更多其他相关第三方库,例如RxJava之类的,这会增加学习理解成本。

1.3文章组织

每一章会在开头进行功能框架说明,以及基本的代码设计,会说明为什么这样设计,中间会多多少少说明一些相关的设计模式。之后会进行代码的编写,并说明为什么要如此编写,我们不光要会写代码,而且要知道怎样写高质量的代码,最后会进行总结。

整片系列型文章会按照如上所说的功能陆续的展开,直到最后完成一个图片编辑器,如果你能随我坚持到最后,那么我会为你鼓掌,相信你也会为自己鼓掌。

1.4github项目地址

https://github.com/sunquan9301/MediaEditor

1.5创建项目

打开AndroidStudio,File —> New —> New Project

输入项目名和包名,我的分别为mediaeditor和com.sunquan.mediaeditor

选择最小SDK为21,这里选择最小版本为21,减少低版本的兼容,点击OK创建。
项目创建好之后,我们先接入Fresco,官网链接:https://www.fresco-cn.org/docs/index.html, 可参看官网引导添加相关依赖,这里不再赘述。Ok, 接下来在MainActivity 的onCreate里面初始化Fresco。
在这里插入图片描述

接下来接入ButterKnife,不了解的还请百度,在gradle.properties下新建2个变量如下
在这里插入图片描述
在build.gradle,app模块下添加依赖,这里同时引入RecycleView
在这里插入图片描述

做好如下准备后我们基本需要的第三方库已经齐全了。

1.6代码搭建

首先建立三个包general, utils,views,general存放一些通用的类,例如Activity的基类,Fragment的基类,utils包存放一些工具类,例如BitmapUtil,ViewUtil等,views存放一些自定义的View类。

建好包之后,我们初步抽离出来一个基类BaseActivity,这个基类包含什么功能呢,我们可以思考到的任何一个Activity都需要setContentView,ButterKnife绑定,初始化数据,初始化view,绑定响应事件。初步建立如下BaseActivity。

在这里插入图片描述
说明:

  1. 继承的是AppCompatActivity,而不是Activity
  2. abstract,因为是基类,所以定义的是抽象类,没有自己的实例
  3. 在BaseActivity进行ButterKnife.bind;并初步定义了三个方法getLayoutId(),initView(),bindAction(),用于初始化布局文件,初始化view,和绑定相应的事件。

设计模式-模版:

这里引申的总结一下模版设计模式,在24个设计模式中,有一个设计模式叫模版,先看定义:

模版设计模式:定义一个算法的骨架,而将具体的算法延迟到子类中实现

怎么理解呢:就是说我定义了一个算法的步骤和过程,具体的过程细节,在子类中具体去实现,反过来看BaseActivity,这里简单包括了如下几个步骤,绑定布局文件,初始化view,绑定view的事件响应。至于具体每个步骤的细节,留给继承BaseActivity的类去实现,这里可以说简单的应用了模版设计模式。

几点说明:

  1. 模版方法定义了算法的步骤,把这些步骤的实现延迟到了子类。
  2. 模版方法模式为我们提供了一种代码复用的重要技巧。
  3. 通常使用继承,抽象的方法由子类实现

接着,新建PhotoEditActivity,在AndroidManifest.xml进行申明,同时,新建布局文件activity_photo_edit.xml,在该xml里面建立一个TextView,名字叫做choose photo。点击这个choose photo TextView的时候,就会跳到图片选择页面,这也是接下来需要做的事情。

1.7总结

本篇文章描述了该系列文章所要做的具体事宜,并进行初步的项目搭建,希望大家能和我一起坚持coding下去。写该系列文章的初衷,在沉淀自己知识技能的同时,分享知识给大家,因为市面上还没有跟图片编辑相关的书籍。而且自己想以一种代码实践的方式和大家沟通,中间会结合代码编写阐述涉及到的相关知识。希望大家能轻松愉快的跟着读并且实践下去。


在这里插入图片描述
扫码关注公众号 小码时间 小码时间专注于高质量系列性文章,希望大家能一起来学习,交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值