zoukankan      html  css  js  c++  java
  • 安卓贴图源码--->记录旋转后位置..类似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        

  • 相关阅读:
    sql 相关子查询
    sql 执行计划
    SQL表连接查询(inner join、full join、left join、right join)
    sql执行顺序
    sql 语句 嵌套子查询 执行顺序分析
    只有程序员才看得懂的情书
    Give Me an E
    hdu 1114 (背包变形)
    模版 并查集
    背包 讲解
  • 原文地址:https://www.cnblogs.com/andlp/p/matrix.html
Copyright © 2011-2022 走看看