Android 撕衣服(刮刮乐游戏)

项目简介:

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

详细介绍:

用户启动项目后,加载一张图片,当用户点击图片的时候,点击的一片区域就会消失,从而显示出在这张图片下面的图片

这个小游戏类似与刮奖一样,刮开涂层就会显示文字。

这里则是撕掉美女身上的衣服,漏出里面的图片。

该应用涉及到的知识有:

  • 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;
            }
        });

    }
}

最后,部署后,随便点几下屏幕,效果就是这样:

时间: 2024-08-01 10:46:05

Android 撕衣服(刮刮乐游戏)的相关文章

Android实现刮刮乐效果

前几个月刚接触Android的时候做了一个小项目,其中也用到了类似刮刮乐的效果,现在把代码贴出来 首先要做一个类似橡皮擦的东西吧,然后才能把纸上的笔迹擦除 /** * FileName: SplashActivity.java * * @desc 橡皮擦功能,类似刮刮乐效果 * @author HTP * @Date 20140311 * @version 1.00 */ public class Text_Rubbler extends TextView { private float TOU

刮刮乐JS 兼容android和ios

修正了在Android下刮不动的bug (function(bodyStyle) { bodyStyle.mozUserSelect = 'none'; bodyStyle.webkitUserSelect = 'none'; var $canvas = $(".canvas"); var moveTime,canvasTop=$canvas.offset().top; $canvas.attr("data-flag","true"); var

游戏的套路你知道吗? H5 Canvas刮刮乐

玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个页面的时候你的翻牌结果已经随着你点开而请求到了. 接下来 就是一些动画效果 然后告诉你的中奖结果是什么. 其实就很像你看的那种街头,赌碗 一个样子. 为什么 你的大号 总是什么奖都抽不到  小号总是能够抽到一些东西. 其实就是游戏策划对用户的一些粘度数据的分析   还有就是对你用户的衰减做的一些统计

Android涂鸦技术及刮刮乐示例分析

概述: 很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点.下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和刮刮乐. 参考: http://blog.csdn.net/lmj623565791/article/details/40162163 此人的博客的确很好,想学习的同学也可以去参考一下这个大牛的其他博客. http://blog.csdn.net/t12x3456/article/details/104329

使用Canvas对象实现“刮刮乐”效果

在淘宝.京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱.从客户端的体验来说,这种效果应该是通过网页来实现的,那么,我们使用Android的自带控件能不能实现这种刮刮乐的效果呢?当然可以,本篇文章将介绍使用Canvas这个对象,如何实现"刮刮乐"的效果. 先看效果图 下面我们看一下如何使用代码实现 布局文件 <FrameLayout xmlns:android="http://schemas.android.com/a

安卓开发之刮刮乐实例教程

刮奖在生活中常常见到,网上现在也有各种各样的抽奖活动,下面我们就要实现一个刮刮乐程序,可以完美满足 大家的虚荣心,哈哈,下面就开始吧,100%中奖的喔! 下面先来看看效果图: 让我们来看看它的布局: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <RelativeLayout      android:layout_width="match_parent"      android:layout_heigh

HTML5 CSS3 专题 :canvas 实现彩票刮刮乐

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34089553 今天给大家带来一个刮刮乐的小例子~基于HTML5 canvas的,有兴趣的可以改成android版本的,或者其他的~ 效果图: 贴一张我中500w的照片,咋办啊,怎么花呢~ 好了,下面开始原理: 1.刮奖区域两个Canvas,一个是front , 一个back ,front遮盖住下面的canvas. 2.canvas默认填充了一个矩形,将下面canvas效果图遮盖

Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么

很久以前也过一个html5的刮刮卡效果~~上次看到有人写Android的刮刮卡效果~~于是乎产生了本篇博客~~此类例子也比较多了,大家可以百度看看~不过还是通过本例子,带大家发掘一下,里面隐含的知识~ 1.Xfermode以及PorterDuff 如果大家还记得,曾经在博客:完美实现图片圆角和圆形 简单介绍过圆角的实现原理也是基于这个. 首先我们看一下官方的例子,很好的展示了16种Mode的效果: 注:先绘制的Dst,再绘制的Src. 好了,看了这个图,我来问大家几个问题: 问题1.如果我想实现

【微信公众平台开发】微信刮刮乐,解决三星兼容性问题

刮刮乐jquery插件:wScratchPad 完整项目资源下载:点击打开链接 运用wScratchPad插件很快弄出刮刮乐的效果,代码如下: <!DOCTYPE html> <html> <head> <meta CHARSET="UTF-8"> <title>刮刮乐</title> <script type="text/javascript" src="./inc/jquer