一、原理:
现在教大家做一款在市场上非常火的的应用,撕衣服。其实原理很简单:
1.准备两张一样的图片,一张是穿有衣服的,另一张是没有穿衣服的。
2.通过FrameLayout进行布局,穿衣服的放上面,没穿衣服的图片放下面。
3.通过触摸事件进行判断,手指划过的地方,让穿衣服的图片变成透明,就显示到了下面没穿衣服的图片。

二、效果图片:

三、源码:

/*** @描述         扒开衣服* @项目名称      App_Basic* @包名         com.example.basic.image* @类名         GameImageActivity* @author      chenlin* @date        2014-3-20 下午4:42:28* @version     1.0*/public class GameImageActivity extends BaseActivity implements OnTouchListener {//定义上下两张视图控件private ImageView mBackImg, mUpImg;//用来绘图的图片private Bitmap mChangeBitmap;//画板private Canvas mCanvas;//画笔private Paint mPaint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_game_image);initViews();drawBitmap();mUpImg.setOnTouchListener(this);}public void drawBitmap() {//改变图片大小BitmapFactory.Options opts = new Options();opts.inSampleSize = 2;//只读的图片Bitmap backBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.p1, opts);Bitmap upBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.p2, opts);//可以修改的空白的BitmapmChangeBitmap = Bitmap.createBitmap(upBitmap.getWidth(), upBitmap.getHeight(), upBitmap.getConfig());//将mChangeBitmap作为画布,mCanvas = new Canvas(mChangeBitmap);mPaint = new Paint();mPaint.setColor(Color.BLACK);mPaint.setAntiAlias(true);mPaint.setStrokeWidth(5);//将upBitmap画到画布上。mCanvas.drawBitmap(upBitmap, new Matrix(), mPaint);//把图片设置到控件里mBackImg.setImageBitmap(backBitmap);mUpImg.setImageBitmap(mChangeBitmap);}public void initViews() {mBackImg = (ImageView) findViewById(R.id.iv_back);mUpImg = (ImageView) findViewById(R.id.iv_up);}@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_MOVE:int moveX = (int) event.getX();int moveY = (int) event.getY();for (int i = -5; i < 5; i++) {for (int j = -5; j < 5; j++) {//更改画布上该像素点的颜色mChangeBitmap.setPixel(i + moveX, j + moveY, Color.TRANSPARENT);}}//重新绘制到ImageView上面mUpImg.setImageBitmap(mChangeBitmap);break;}return true;}}

四、布局文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/iv_back"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitXY"android:background="@drawable/p2" /><ImageViewandroid:id="@+id/iv_up"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitXY"android:background="@drawable/p1"/></FrameLayout>

Android 撕开衣服解析相关推荐

  1. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  2. Android源码解析(一)动画篇-- Animator属性动画系统

    Android源码解析-动画篇 Android源码解析(一)动画篇-- Animator属性动画系统 Android源码解析(二)动画篇-- ObjectAnimator Android在3.0版本中 ...

  3. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  4. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/act ...

  5. Android Service完全解析,关于服务你所需知道的一切(下)

    转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...

  6. Android Volley完全解析3:定制自己的Request

    原文链接:http://blog.csdn.net/guolin_blog/article/details/17612763,CSDN 郭霖 经过前面两篇文章的学习,我们已经掌握了Volley各种Re ...

  7. Android Volley完全解析2:使用Volley加载网络图片

    原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...

  8. Android Volley完全解析1:初识Volley的基本用法

    原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 1. Volley简介 我们平时在开发Android应用的 ...

  9. 关于Android中XML解析方式

    XML解析一般有三种方式:DOM .SAX.PULL. SAX解析器:它是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作.当事件源产生事件后,调用事件处理器相应的 ...

最新文章

  1. 程序员百万年薪进阶指南(一)
  2. BZOJ3743 COCI2015Kamp(树形dp)
  3. Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
  4. Android4大组件
  5. 《修改代码的艺术》读书笔记一
  6. java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....
  7. Notepad++ 使用心得
  8. Exception异常处理
  9. python和CSV
  10. 如何取消计算机的自动更新,电脑自动更新如何取消 电脑自动更新取消方法
  11. 你在 Docker 中跑 MySQL?恭喜你,可以滚了!
  12. 请求示例代码_新版云效:代码托管初体验
  13. JavaWeb图书管理系统+论文+答辩ppt
  14. oracle用plsql导出表结构与数据
  15. python识别图片中的文字、数值并转文档
  16. [转载] 使用Bugzilla,你肯定会遇到的坑。
  17. 【无标题】setting.json 配置
  18. 通过命令符查看笔记本电脑的电池损耗
  19. python开发要学什么_运维为什么要学编程?编程为什么是Python?
  20. Origin绘制双x,y轴图像

热门文章

  1. html给图片绝对定位,html相对定位和绝对定位
  2. 你这么真诚,一定是骗子!
  3. COGS 336 Vijos 1018 NOI2003 智破连环阵
  4. Information Communication Technology,简称ICT
  5. VUE 使用animated 动画
  6. 2022-2028全球房地产众筹平台行业调研及趋势分析报告
  7. Excel 如何制作时间轴
  8. OutputFormat类——Hadoop
  9. Shorten the command line via JAR manifest or via a classpath file and rerun.
  10. rimraf : 无法加载文件,‘set-executionpolicy‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。