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;
	@Override
	protected 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);
		//可以修改的空白的Bitmap
		alterBitmap = 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() {
			
			@Override
			public 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

原文地址:https://www.cnblogs.com/lanzhi/p/6469457.html