您的位置:首页 > 移动开发 > Android开发

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

2013-12-20 13:20 239 查看
现在很多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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐