Android应用《撕开美女衣服》的实现过程及源代码
现在很多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应用《撕开美女衣服》的实现过程及源代码相关推荐
- Android 扒开美女衣服
本文主要实现一个小的扒开美女衣服的游戏项目 效果如下: 项目布局设计: <FrameLayout xmlns:android="http://schemas.android.com/a ...
- 【Android View绘制之旅】Draw过程
出效果:绘制 经过前面的准备工作 :[Android View绘制之旅]Measure过程,[Android View绘制之旅]Layout过程 我们的视图具备了宽高数据,位置数据,现在到了激动人心的 ...
- p750tm安装linux系统,Android 开发环境(虚拟机,LINUX, secureCRT)安装过程.pdf
Android 开发环境(虚拟机,LINUX, secureCRT)安装过程 Android linux 开发环境(虚拟机,LINUX, secureCRT )安装过程 注意 由于selinux 打开 ...
- Android系统进程Zygote启动过程的源代码分析
原文地址:http://blog.csdn.net/luoshengyang/article/details/6747696 Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口 ...
- Android系统进程Zygote启动过程的源代码分析(3)
Step 5. ZygoteInit.startSystemServer 这个函数定义在frameworks/base/core/java/com/android/internal/os ...
- Android设备上一张图片的显示过程
转自:http://blog.csdn.net/jxt1234and2010/article/details/50524213 Android设备上一张图片的显示过程 应用示例 假如我们现在有一张这样 ...
- Android Studio 安装详解及安装过程中出现的问题解决方案
Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...
- Android 10 HAL 层添加HIDL实现过程
本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...
- emule中节点加入Kad网络过程(源代码详解)【对原文部分改进】
from: http://blog.csdn.net/chenbuaa/article/details/2301656 emule中节点加入Kad网络过程(源代码详解) 程序启动: EmuleDlg. ...
最新文章
- Linux C编程--线程操作2--线程同步详解
- 花点时间了解消息,句柄和窗口
- 第三次作业:PSP耗时
- 博文写作——摘要摘要图标
- Python快速安装库的靠谱办法
- 基于kickstart实现网络共享以及制作光盘和U盘实现半自动安装centos6系统
- python自动打开浏览器下载zip,并且提取内容写入excel
- 计算机基本知识(8000)---boot系统引导文件
- 如何使用Photoshop修改论文中插图颜色
- ADMM算法的应用: 降低SDP算法复杂度
- android中jni的调用过程,Android中JNI的调用生成头文件步骤
- java 中怎么打印一个日历_日历打印用java实现
- 小马哥杂牌机高仿机刷机教程---史上最简单的卡刷方法。adb推送模式自动卡刷教程
- 使用国外服务器的注意事项
- 【实用工具】让文件资源管理器像浏览器一样实现多标签化——QTTabBar
- 程序员用技术在「抖音」上「撩妹」
- 公司企业微信公众号怎么创建小程序?
- mysql mma 原理_Android中m、mm、mmm、mma、mmma的区别
- 【Java Web 安全】常见安全漏洞及解决方案
- 电视云视听服务器无响应怎么回事,云视听企鹅停服怎么办?原因是什么?
热门文章
- 在使用ArcMap中的核密度分析时“输出像元大小”出现异常数的解决方案
- CSC系统--Chrome浏览器登陆方法
- 学习笔记——String类常用方法(字符、字节、比较、查找、替换、拆分、截取、结构、格式化、连接、入池、驱除空格、长度计算、大小写转换等)
- 中台架构与数据模型管控
- Kubernetes 部署策略
- 医药行业,正在抛弃广告?
- 如何有效开展小组教学_(完整版)如何有效开展小组合作学习活动
- 二进制数字频带传输2DPSK系统的设计
- 仙剑5前传大吐糟 2013-2-5记录
- Ubuntu8.04安装Realplayer11