现在很多Android市场中都能找到关于美女的应用,比如 撕开美女衣服、吹裙子等。

这些应用的下载量挺大的,作为Android的开发人员或者一名技术人员我们不能只局限在欣赏应用的层面,很多时候需要我们去揭开神秘背后的真相,下面我们来看一下如何来开发这样一个类似的撕开美女衣服的应用。

先来看一下效果:

其实这个应用的原理很简单,有两张图片,布局如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent" ><ImageView android:id="@+id/back_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/back"/><ImageView android:id="@+id/up_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/up"/>
</FrameLayout>

上面一张图片是穿着衣服的图片,下面一张图片是撕开衣服的图片。

在Activity中我们先创建一个可以编辑的Bitmap图片对象,然后对该图片中像素点的颜色(透明度)进行改变就实现我们所要的效果了。

package com.example.sikaimeinvyifu;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;public class MainActivity extends Activity {private ImageView backImg;private ImageView upImg;private Bitmap alterBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//改变图片大小BitmapFactory.Options opts = new Options();opts.inSampleSize = 1;backImg = (ImageView) findViewById(R.id.back_img);upImg = (ImageView) findViewById(R.id.up_img);//只读的图片Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.back, opts);Bitmap up = BitmapFactory.decodeResource(getResources(), R.drawable.up, opts);//可以修改的空白的BitmapalterBitmap = Bitmap.createBitmap(up.getWidth(), up.getHeight(), up.getConfig());//将alterBitmap作为画布,然后将Bitmap up画到画布上。canvas = new Canvas(alterBitmap); paint = new Paint();paint.setStrokeWidth(5);paint.setColor(Color.BLACK);canvas.drawBitmap(up, new Matrix(), paint);backImg.setImageBitmap(back);upImg.setImageBitmap(alterBitmap);upImg.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();System.out.println(x);System.out.println(y);for(int i=-5; i<5; i++){for(int j=-5; j<5; j++){//更改画布上该像素点的颜色alterBitmap.setPixel(i + x, j + y, Color.TRANSPARENT);}}//重新绘制到ImageView上面upImg.setImageBitmap(alterBitmap);break;default:break;}return true;}});}
}

源代码下载地址:http://download.csdn.net/detail/lxq_xsyu/6744849

Android应用《撕开美女衣服》的实现过程及源代码相关推荐

  1. Android 扒开美女衣服

    本文主要实现一个小的扒开美女衣服的游戏项目 效果如下: 项目布局设计: <FrameLayout xmlns:android="http://schemas.android.com/a ...

  2. 【Android View绘制之旅】Draw过程

    出效果:绘制 经过前面的准备工作 :[Android View绘制之旅]Measure过程,[Android View绘制之旅]Layout过程 我们的视图具备了宽高数据,位置数据,现在到了激动人心的 ...

  3. p750tm安装linux系统,Android 开发环境(虚拟机,LINUX, secureCRT)安装过程.pdf

    Android 开发环境(虚拟机,LINUX, secureCRT)安装过程 Android linux 开发环境(虚拟机,LINUX, secureCRT )安装过程 注意 由于selinux 打开 ...

  4. Android系统进程Zygote启动过程的源代码分析

    原文地址:http://blog.csdn.net/luoshengyang/article/details/6747696 Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口 ...

  5. Android系统进程Zygote启动过程的源代码分析(3)

    Step 5. ZygoteInit.startSystemServer        这个函数定义在frameworks/base/core/java/com/android/internal/os ...

  6. Android设备上一张图片的显示过程

    转自:http://blog.csdn.net/jxt1234and2010/article/details/50524213 Android设备上一张图片的显示过程 应用示例 假如我们现在有一张这样 ...

  7. Android Studio 安装详解及安装过程中出现的问题解决方案

    Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...

  8. Android 10 HAL 层添加HIDL实现过程

    本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...

  9. emule中节点加入Kad网络过程(源代码详解)【对原文部分改进】

    from: http://blog.csdn.net/chenbuaa/article/details/2301656 emule中节点加入Kad网络过程(源代码详解) 程序启动: EmuleDlg. ...

最新文章

  1. Linux C编程--线程操作2--线程同步详解
  2. 花点时间了解消息,句柄和窗口
  3. 第三次作业:PSP耗时
  4. 博文写作——摘要摘要图标
  5. Python快速安装库的靠谱办法
  6. 基于kickstart实现网络共享以及制作光盘和U盘实现半自动安装centos6系统
  7. python自动打开浏览器下载zip,并且提取内容写入excel
  8. 计算机基本知识(8000)---boot系统引导文件
  9. 如何使用Photoshop修改论文中插图颜色
  10. ADMM算法的应用: 降低SDP算法复杂度
  11. android中jni的调用过程,Android中JNI的调用生成头文件步骤
  12. java 中怎么打印一个日历_日历打印用java实现
  13. 小马哥杂牌机高仿机刷机教程---史上最简单的卡刷方法。adb推送模式自动卡刷教程
  14. 使用国外服务器的注意事项
  15. 【实用工具】让文件资源管理器像浏览器一样实现多标签化——QTTabBar
  16. 程序员用技术在「抖音」上「撩妹」
  17. 公司企业微信公众号怎么创建小程序?
  18. mysql mma 原理_Android中m、mm、mmm、mma、mmma的区别
  19. 【Java Web 安全】常见安全漏洞及解决方案
  20. 电视云视听服务器无响应怎么回事,云视听企鹅停服怎么办?原因是什么?

热门文章

  1. 在使用ArcMap中的核密度分析时“输出像元大小”出现异常数的解决方案
  2. CSC系统--Chrome浏览器登陆方法
  3. 学习笔记——String类常用方法(字符、字节、比较、查找、替换、拆分、截取、结构、格式化、连接、入池、驱除空格、长度计算、大小写转换等)
  4. 中台架构与数据模型管控
  5. Kubernetes 部署策略
  6. 医药行业,正在抛弃广告?
  7. 如何有效开展小组教学_(完整版)如何有效开展小组合作学习活动
  8. 二进制数字频带传输2DPSK系统的设计
  9. 仙剑5前传大吐糟 2013-2-5记录
  10. Ubuntu8.04安装Realplayer11