博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 撕衣服(刮刮乐游戏)
阅读量:6006 次
发布时间:2019-06-20

本文共 2984 字,大约阅读时间需要 9 分钟。

项目简单介绍:

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

具体介绍:

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

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

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

该应用涉及到的知识有:

  • 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文件的代码:

这里实际上就是创建两个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; } }); }}

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

这里写图片描写叙述

你可能感兴趣的文章
让VMware ESX中的虚拟机随esx开机自动启动
查看>>
Electron Cash钱包存BCH教程
查看>>
自定义key解决zabbix端口监听取值不准确的问题
查看>>
入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试...
查看>>
composer 安装 ubuntu 12.04
查看>>
微服务(二)hystrix
查看>>
Performing a thread dump in Linux or Windows--reference
查看>>
推荐系统中常用算法 以及优点缺点对比
查看>>
cocos2d-x v3.2环境配置(现在3.x版本号可以配置该)
查看>>
Go语言标准库之JSON编解码
查看>>
linux上架设l2tp+ipsec ***服务器
查看>>
node.js中使用http模块创建服务器和客户端
查看>>
面向对象编程-何为对象
查看>>
2015 多校联赛 ——HDU5334(构造)
查看>>
mysql字符集
查看>>
DP_1d1d诗人小G
查看>>
非、半、结构化数据学习【转载】
查看>>
avalon加载一闪而过现象
查看>>
Python学习第二天-编写购物车
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>