安卓贴图源码--->单点触控.多点触控.类似in/百度魔图
效果如图:
类似in,百度魔图,的贴图功能 核心的地方:单/多点 旋转缩放后记录各个顶点小图标位置
引用这里 http://blog.csdn.net/xiaanming/article/details/42833893
涉及自定义viewgroup,自定义view以及Touch事件的处理,手势事件的封装等
在自定义的viewgroup中维护一个List<子view>, Touch事件在viewgroup中进行处理,根据当前选中的List中的子view的各顶点坐标
以及四个角上的小图标长宽 当前触摸点坐标位置 来判断是否点中 顶点小图标
viewgroup中先遍历list进行绘制子view,后绘制所选子view各角顶点小图标
1.添加子view在DemoActivity的showAddDialog()方法中 有例子
操作viewgroup的实例 picsGestureLayout.addChildImage()进行添加子view 并刷新界面
2.删除子view在DemoActivity的onClick方法 case R.id.btnDelete:
操作viewgroup的实例 picsGestureLayout.getSelectedChildImage获取当前选中子view
后用该实例picsGestureLayout.deleteChildImage(当前选中子view)进行删除List中子view 并刷新界面
3.修改子view在DemoActivity的showModifyDialog中
同上,拿到当前子view 直接替换其bitmap 并刷新viewpicsGestureLayout.invalidate();
这里直接在主线程刷新view了,项目里要考虑多线程或者异步任务,另外修改子view时边框等处理的并不好,如有需要自行改动
4.子view上移一个图层 在DemoActivity的onClick方法 case R.id.btnUplayout;
同上拿到viewgroup实例 picsGestureLayout.upSelectedImageLayout();把当前选中的子view上移一个图层 并刷新界面
5.字view下移一个图层在DemoActivity的onClick方法 case R.id.btnDownlayout;
同上拿到viewgroup实例 picsGestureLayout.downSelectedImageLayout();把当前选中的子view上移一个图层 并刷新界面
6.清空所有子view,实际就是删除viewgroup中维护的List<子view>并刷新界面
同上拿到viewgroup实例 picsGestureLayout.clearChildImage(); 删除所有子view,并更新界面
7.可扩展添加画笔涂鸦图层 在viewgroup源码中onDraw(Canvas canvas)函数里,依次绘制完子view,顶点小图标之后
可添加一个最上层,(添加一个全透明的图蒙住屏幕,在这个图上绘制各种涂鸦即可)作为画笔涂鸦的图层 将会在所有图层之上
里面工具类写的太烂了,15年写的原谅我吧.有需要的可以直接用.希望大家都为开源贡献一份力量.
//ps 当时写的时候一直遇到旋转后坐标位置不准跑偏的问题,后来才知道 是因为旋转时候,三角函数在各个象限内计算不同 具体看代码
最后eclipse工程源码:
http://files.cnblogs.com/files/andlp/com.maneater.picscreator.zip
安卓贴图源码--->单点触控.多点触控.类似in/百度魔图的更多相关文章
- Android Handler处理机制 ( 一 )(图+源码分析)——Handler,Message,Looper,MessageQueue
android的消息处理机制(图+源码分析)——Looper,Handler,Message 作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习 google大牛们的设计思想. ...
- 一款安卓ShowcaseView视图源码效果
该源码是从源码天堂那边转载过来的,大家可以看看一下吧啊,一款安卓ShowcaseView视图源码效果,非常不错的,特别是在做引导时使用. 源码下载地址:http://code.662p.com/vie ...
- 点菜网---Java开源生鲜电商平台-系统架构图(源码可下载)
点菜网---Java开源生鲜电商平台-系统架构图(源码可下载) 1.点菜网-生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台 ...
- unity3d 触屏多点触控(旋转与缩放)
unity3d 触屏多点触控(旋转与缩放) /*Touch OrbitProgrammed by: Randal J. Phillips (Caliber Mengsk)Original Creati ...
- 中秋礼物!开源即时通信GGTalk安卓版全新源码!
经过连续两个多月的努力(开发.调试.测试.改bug),我们终于赶在中秋国庆之前能把全新的GGTalk Android版本献给大家. 4年之前我们就推出了GGTalk Android的第一个版本,但是功 ...
- jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
Deferred的概念请看第一篇 http://www.cnblogs.com/aaronjs/p/3348569.html ******************构建Deferred对象时候的流程图* ...
- 转 Android的消息处理机制(图+源码分析)——Looper,Handler,Message
作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想.android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种 ...
- 【转】android的消息处理机制(图+源码分析)——Looper,Handler,Message
原文地址:http://www.cnblogs.com/codingmyworld/archive/2011/09/12/2174255.html#!comments 作为一个大三的预备程序员,我学习 ...
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了.这不,前几天为了了解android ...
随机推荐
- 对B+树与索引在MySQL中的认识
[TOC] 概述 本质:数据库维护某种数据结构以某种方式引用(指向)数据 索引取舍原则:索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数 B树 满足的条件 d为大于1的一个正整数,称为B-Tre ...
- Jackson轻易转换JSON
原文http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html Jackson可以轻松的将Java对象转换成json对象和xml文档,同样 ...
- Linux下5种IO模型的小结
概述 接触网络编程,我们时常会与各种与IO相关的概念打交道:同步(Synchronous).异步(ASynchronous).阻塞(blocking)和非阻塞(non-blocking).关于概念的区 ...
- 安装 Visual Studio Web Tools 的奇怪问题
安装Microsoft ASP.NET 5 RC 1 时提示 0x80070005 - 拒绝访问 日志文件为 [1968:3F64][2015-11-20T10:08:36]i010: Launchi ...
- struts2的拦截器(Interceptor)与过滤器(Filter)
一.拦截器与过滤器的区别: 1.filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于Java本身的反射机制,这是两者最本质的区别. ...
- 一维码:EAN-13码的识别
1.一维码简述: 一维条码是一种能用于信息编码和信息自动识别的标准符号,是由一组宽度不同的黑白符号按一定规则交替排列编码组成的图形符号,用于表示一定的信息. 码制指条码符号的类型,不同的类型有不同的编 ...
- 第54课 Qt 中的多页面切换组件
1. 多页面切换组件(QTabWidget) (1)能够在同一个窗口中自由切换不同页面的内容 (2)是一个容器类型的组件,同时提供友好的页面切换方式 2. QTabWidget的使用方式 (1)在应用 ...
- SVN Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。
错误 1 Files 的值“ < < < < < < < .mine”无效.路径中具有非法字符. 今天使用SVN进行更新的时候,出现了如上问题,想起卓 ...
- gradle项目中资源文件的相对路径打包处理技巧
开发java application时,不管是用ant/maven/gradle中的哪种方式来构建,通常最后都会打包成一个可执行的jar包程序,而程序运行所需的一些资源文件(配置文件),比如jdbc. ...
- C#基础系列——反射笔记
前言:使用反射也有几年了,但是一直觉得,反这个概念很抽象,今天有时间就来总结下这个知识点. 1.为什么需要反射: 最初使用反射的时候,作为小菜总是不理解,既然可以通过new 一个对象的方式得到对象,然 ...