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;

    @Override
    protected 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);
        //可以修改的空白的Bitmap
        mChangeBitmap = 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);
    }

    @Override
    public 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" >

    <ImageView
        android:id="@+id/iv_back"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:background="@drawable/p2" />

    <ImageView
        android:id="@+id/iv_up"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:background="@drawable/p1"
         />

</FrameLayout>
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lovoo/article/details/51420046
个人分类: Android图片处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Android 撕开美女衣服解析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭