Android 撕开衣服解析
一、原理:
现在教大家做一款在市场上非常火的的应用,撕衣服。其实原理很简单:
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 撕开衣服解析相关推荐
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android源码解析(一)动画篇-- Animator属性动画系统
Android源码解析-动画篇 Android源码解析(一)动画篇-- Animator属性动画系统 Android源码解析(二)动画篇-- ObjectAnimator Android在3.0版本中 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/act ...
- Android Service完全解析,关于服务你所需知道的一切(下)
转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...
- Android Volley完全解析3:定制自己的Request
原文链接:http://blog.csdn.net/guolin_blog/article/details/17612763,CSDN 郭霖 经过前面两篇文章的学习,我们已经掌握了Volley各种Re ...
- Android Volley完全解析2:使用Volley加载网络图片
原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...
- Android Volley完全解析1:初识Volley的基本用法
原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 1. Volley简介 我们平时在开发Android应用的 ...
- 关于Android中XML解析方式
XML解析一般有三种方式:DOM .SAX.PULL. SAX解析器:它是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作.当事件源产生事件后,调用事件处理器相应的 ...
最新文章
- 程序员百万年薪进阶指南(一)
- BZOJ3743 COCI2015Kamp(树形dp)
- Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
- Android4大组件
- 《修改代码的艺术》读书笔记一
- java判断ftp创建目录是否成功_Java判断Ftp服务器目录是否存在,若不存在创建目录 ....
- Notepad++ 使用心得
- Exception异常处理
- python和CSV
- 如何取消计算机的自动更新,电脑自动更新如何取消 电脑自动更新取消方法
- 你在 Docker 中跑 MySQL?恭喜你,可以滚了!
- 请求示例代码_新版云效:代码托管初体验
- JavaWeb图书管理系统+论文+答辩ppt
- oracle用plsql导出表结构与数据
- python识别图片中的文字、数值并转文档
- [转载] 使用Bugzilla,你肯定会遇到的坑。
- 【无标题】setting.json 配置
- 通过命令符查看笔记本电脑的电池损耗
- python开发要学什么_运维为什么要学编程?编程为什么是Python?
- Origin绘制双x,y轴图像
热门文章
- html给图片绝对定位,html相对定位和绝对定位
- 你这么真诚,一定是骗子!
- COGS 336 Vijos 1018 NOI2003 智破连环阵
- Information Communication Technology,简称ICT
- VUE 使用animated 动画
- 2022-2028全球房地产众筹平台行业调研及趋势分析报告
- Excel 如何制作时间轴
- OutputFormat类——Hadoop
- Shorten the command line via JAR manifest or via a classpath file and rerun.
- rimraf : 无法加载文件,‘set-executionpolicy‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。