• 安卓贴图源码--->记录旋转后位置..类似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        

  • 相关阅读:
    范畴定义
    泛函编程(0)-什么是泛函编程
    函数式语言的特性
    理解函数式编程
    未阅归档
    monad-本质解释- a monad is a design pattern--monad与泛型相关
    打印管理系统
    函数式JS: 原来promise是这样的monad
    Promise是Monad吗?
    Scala和范畴论 -- 对Monad的一点认识
  • 原文地址:https://www.cnblogs.com/andlp/p/matrix.html
Copyright © 2020-2023  润新知