今天我们学习撕衣服。我先说一下撕衣服的原理: 撕衣服有2张图片,一张是美女穿外衣的图片,一张是美女穿内衣的图片。当我们手指滑动后,然后将美女穿外衣衣服的图片设置为透明色,这样下面的图片就显示出来了。

直接上代码:

public class MainActivity extends Activity {private Bitmap bmpCopy;private Paint paint;private Canvas canvas;private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1: 因为我修改外衣的图片,所以要给外衣设置副本Bitmap bmpSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi);bmpCopy = Bitmap.createBitmap(bmpSrc.getWidth(), bmpSrc.getHeight(), bmpSrc.getConfig());paint = new Paint();canvas = new Canvas(bmpCopy);canvas.drawBitmap(bmpSrc, new Matrix(), paint);imageView = (ImageView) findViewById(R.id.lv2);imageView.setImageBitmap(bmpCopy);//2:监听触摸事件imageView.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {//我们只关心滑动事件switch (event.getAction()) {case MotionEvent.ACTION_MOVE://手指滑动的轨迹设置为透明色int x = (int) event.getX();int y = (int) event.getY();cleanImage(x, y);break;default:break;}return true;}});}//因为每次只设置1个像素,这样很慢public void cleanImage(int x, int y){for(int i = -10; i < 10; i++){for(int j = -10; j < 10; j++){//绘制以x,y为圆心半径为10的圆if(Math.sqrt(i*i + j*j) <= 10){//判断手指是否越界, 如果越界不处理if(x+i < bmpCopy.getWidth() && y+j < bmpCopy.getHeight() && x+i >=0 && y+j >=0){//设置透明色bmpCopy.setPixel(x+i, y+j, Color.TRANSPARENT);//设置图像imageView.setImageBitmap(bmpCopy); }}}}}
}

效果图:

Android 多媒体开发学习之撕衣服相关推荐

  1. Android多媒体开发

    Android多媒体开发系列文章 Android多媒体开发:录音机 Android多媒体开发:照相机 TextureView+MediaPlayer实现在线短视频播放 Android多媒体开发:第三方 ...

  2. Android多媒体开发技术

    周末参加了线下安卓巴士论坛组织的"安卓开发者的修炼之道",几位嘉宾分享的内容都很赞.没时间整理文字版,直接分享嘉宾的PPT了. 第二位嘉宾何俊林,前爱奇艺多媒体开发,据说活动现场很 ...

  3. android开发高级开发,Android多媒体开发高级编程 (Shawn Van Every) pdf扫描版

    <android多媒体开发高级编程--为智能手机和平板电脑开发图形.音乐.视频和富媒体应用>使用清晰.直观的示例介绍了android sdk中丰富的多媒体功能,有助于您开发能够创建.播放和 ...

  4. android编程高级教程 pdf,Android多媒体开发高级编程

    在多媒体功能方面,今天的手机同时是照相机.相册.摄像机.电影播放器.音乐播放器.听写机,且可能具备更多功能. 特别是,Android在SDK中具有非常丰富的功能,本书将试图通过讨论和实例对该SDK进行 ...

  5. Android多媒体开发介绍

    Android多媒体开发介绍 一.       多媒体架构 基于第三方PacketVideo公司的OpenCORE来实现,支持所有通用的音频/视频/静态图像格式,包括:MPEG4.H.264.MP3. ...

  6. android多媒体框架学习 详解

    原址 一:多媒体框架概述 jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了! ...

  7. android多媒体框架学习 详解 最新版本

    一:多媒体框架概述 jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现 ...

  8. android NFC 开发学习笔记(1)

    由于工作需求,最近在研究android nfc开发,借鉴了很对大神的文章在此记录自己的学习过程: 大家学习android开发建议首选android开发文档,该文档在你下载的sdk中,路径:/sdk/d ...

  9. Android底层开发学习笔记 第一天

    今天,开始学习Android底层的开发.(注:我是新手小白,纯粹学习笔记,大神们可以直接略过了) 第一部分 编译运行我的第一个Android system. 准备工作: 下载源码:包括u-boot源码 ...

  10. Android游戏开发学习路线

    要想使学习Android游戏开发道路平缓,有以下几条建议: 1.反复阅读<Thinking In Java>即<Java编程思想>,反复练习,透彻理解Java语言特性,打牢Ja ...

最新文章

  1. SpringMVC传递multiple类型select后台Controller的接收方法
  2. ISA系列之ISA Server 2004 中的新增功能--利用多个网络
  3. 计算两个数之间所有整数的和_汇编语言:输入2个0–99之间的整数,对其做乘法运算,在屏幕上显示出该乘积对应的二进制和十六进制数...
  4. Java集合篇:HashMap 与 ConcurrentHashMap 原理总结
  5. 在没有任何数据时进行无效的读取尝试。_技术转载——JVM运行时内存是怎么分布的?...
  6. 方法重载(overload)和方法重写(override)的比较
  7. 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
  8. [vue插件]基于vue2.x的电商图片放大镜插件
  9. LDAP组的概念以及命令
  10. 好看的css3用户基本信息卡片样式源码
  11. 学习iOS最权威的网站
  12. mongodb 批量插入_MongoDB批量插入– MongoDB插入很多
  13. 西门子的十一位CEO
  14. matlab 仿真wsn,wsn仿真matlab
  15. [转]技术以外的功夫
  16. 中职学校计算机基础的重要性,中职非计算机专业学生计算机基础教学浅探
  17. RAC修改IP(public/virtual/scan)
  18. 微软苏州招 Android/iOS 开发!
  19. 关于工业4.0和智能制造的总结以及背后的思考
  20. 基于AppCan移动云平台搭建“智慧移动门户”

热门文章

  1. Python3.x:pytesseract识别率提高(样本训练)
  2. Python入门2(Python与C语言语法的不同、Notepad++运行Python代码)
  3. BZ OJ 2818 Gcd (欧拉函数)
  4. 可浮动的在线qq咨询客服代码
  5. 文本框 只输入数字键和删除键
  6. 如何往一个指定的地址写入一个值呢
  7. f-admin——基于Laravel框架开发的基础权限后台系统
  8. 优化mysql数据库性能的十个参数
  9. 搞大啦!精灵云与全球最大孵化器PNP带你一起飞
  10. JAVA接口和抽象类的特点