Android 撕衣服(刮刮乐游戏)

原创 2017年04月01日 21:26:43

项目简介:

  该项目为撕衣服,类似刮刮乐游戏

详细介绍:

用户启动项目后,加载一张图片,当用户点击图片的时候,点击的一片区域就会消失,从而显示出在这张图片下面的图片
这个小游戏类似与刮奖一样,刮开涂层就会显示文字。
这里则是撕掉美女身上的衣服,漏出里面的图片。

该应用涉及到的知识有:

  • 1.如何实现画图功能
  • 2.如何把像素点变为透明色
  • 3.如何监听手机对屏幕的操作
       主要有触击,滑动,离开三种情况

注意:

  • 1.一定要注意在设置像素点的时候,范围不能超过当前控件的范围
  • 2.设置ImageView最好设置为wrap_content,如果设置为match_parent,可能导致图片旁边留白,影响定位
      例如:如果图片宽距离ImageView组件为20dp(即图片两遍的留白为20dp),当手指移动到(36,0)位置时候,根据该题代码,可以计算出:
      实际上是把以(16,0)为圆心,半径为8的圆形区域的像素点颜色变为透明色,而不是(36,0)附近

步骤:

1.创建一个android的项目,编写activity_main.xml文件的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="hhh.exercise.smultimedia_d.MainActivity" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/aneiyi" />

    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

这里实际上就是创建两个ImageView控件,并且两个控件重叠在一起,界面如下所示:

这里写图片描述

2.编写MainActivity代码:

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
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 iv;
    private Bitmap bmCopy;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.iv);

        // 创建只读的Bitmap对象
        Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi);


        bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());

        // 创建Paint对象
        Paint paint = new Paint();

        // 创建Canvas对象
        Canvas canvas = new Canvas(bmCopy);

        // 开始绘画
        canvas.drawBitmap(bmSrc, new Matrix(), paint);

        // 加载最外层图片
        iv.setImageBitmap(bmCopy);

        // 设置触摸侦听
        iv.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();

                    // 取当前坐标的一片区域(这里以点钱坐标为原点,半径为5的做一个圆形区域)
                    int r = 8;
                    for (int i = -r; i <= r; i++) {
                        for (int j = -r; j <= r; j++) {
                            if (Math.sqrt(i*i+ j*j) <= r) {

                                // 判断当前区域的点是否在ImageView控件范围内,在就执行下面操作,不在就什么也不做
                                if (x + i < bmCopy.getWidth() && x + i > 0 && y + j < bmCopy.getHeight() && y + j > 0) {

                                    // 把用户划过的坐标点的像素设为透明色
                                    bmCopy.setPixel(x + i, y + j, Color.TRANSPARENT);

                                    // 将图片显示在界面上
                                    iv.setImageBitmap(bmCopy);

                                }
                            }
                        }
                    }
                }
                return true;
            }
        });

    }
}

最后,部署后,随便点几下屏幕,效果就是这样:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

HTML5游戏:《撕掉MM的衣服》

游戏99.9%都是程序猿写的,为什么玩游戏的人99.9%都不是程序猿? 有人说,咱是操着卖白粉的心,挣着卖白菜的钱!!! 有人说,每个IT产品和应用背后都是无数程序猿的血与泪!! 有人说,每...
  • cuixiping
  • cuixiping
  • 2011年12月29日 13:59
  • 4979

扒美女衣服——妄撮游戏实现原理

扒美女衣服原版来自日本妄撮游戏,现在介绍一下它的实现原理。 1、两张美女图片,一张穿着衣服,一张没穿衣服。 2、采用FrameLayout将穿衣服的图片放在上面,没穿衣服的放在下面 3、当触摸图片时,...
  • axiaoquan
  • axiaoquan
  • 2014年05月15日 16:05
  • 986

Android小游戏应用---撕破美女衣服游戏

ImageView after; ImageView before; @Override protected void onCreate(Bundle savedInstanceState) {...
  • andywuchuanlong
  • andywuchuanlong
  • 2014年05月17日 16:58
  • 1504

android 实现刮刮乐刮奖效果

在做电商类产品时,经常会有一些活动需求,如抽奖,抽奖的一种方式就是刮刮乐,这次的内容是利用重写View的方式实现刮刮乐的效果。 思路...
  • qq_26865703
  • qq_26865703
  • 2016年04月01日 00:04
  • 1448

Android 实现简单的刮刮乐

上次突发奇想想做个不一样的刮刮乐,参考了大神们的代码。然后,写出了这种效果。 1,先继承TextView/** * Created by Administrator on 2017/2/25. ...
  • qq_26841579
  • qq_26841579
  • 2017年04月15日 19:25
  • 578

Android 撕开美女衣服解析

一、原理: 现在教大家做一款在市场上非常火的的应用,撕美女衣服。其实原理很简单: 1.准备两张一样的图片,一张是穿有衣服的,另一张是没有穿衣服的。 2.通过FrameLayout进行布局,穿衣服...
  • lovoo
  • lovoo
  • 2016年05月15日 23:05
  • 369

手放开游戏(擦衣服游戏)项目源码

下载完代码后请把podfile里面的注释去掉 然后重新pod install --verbose --no-repo-update 以前小时候玩过得一个擦衣服游戏 哈哈 各位娱乐的时候可以玩玩 ...
  • lituanjieba
  • lituanjieba
  • 2016年03月03日 09:21
  • 337

2017 Redhat广东省信息安全竞赛 Writeup

2017 Redhat广东省信息安全竞赛 Writeup
  • qq_31481187
  • qq_31481187
  • 2017年05月07日 10:29
  • 5542

简单的刮刮乐源码

上周看到有同学,写了个刮刮乐的demo,但功能并不完善。 这里手痒,重新封装了一个。 支持成功的回调,修正滑动速度太快,掉帧的问题。 修正移动端,对canvas缩放后,坐标的偏差。AND 用ca...
  • linfenpan
  • linfenpan
  • 2016年07月26日 17:41
  • 886

自定义View 实现 刮刮卡效果和美女撕衣服

直奔高潮,不对,直奔主题。 效果图: 下面上代码: public class TearView extends View { private Paint paint,paintB; ...
  • zhuwentao16
  • zhuwentao16
  • 2016年03月15日 16:15
  • 437
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 撕衣服(刮刮乐游戏)
举报原因:
原因补充:

(最多只允许输入30个字)