博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
撕衣服案例
阅读量:2397 次
发布时间:2019-05-10

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

撕衣服的原理

    就是有两个图片,分别重叠在一起,然后触摸屏幕后就把该位置的图片透明化,这样就显示下面的图片

最简单的创建音频的方式:

MediaPlayer.create(getApplicationContext(), R.raw.higirl).start();

package com.itheima.play;import android.media.MediaPlayer;import android.os.Bundle;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.view.Menu;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 alertBitmap;	private Canvas canvas;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		iv = (ImageView) findViewById(R.id.iv);		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),				R.drawable.pre);		// 创建一个空白的原图的拷贝		//一定要用拷贝的,原理不知道,不用拷贝后面的图片透明api失效		alertBitmap = Bitmap.createBitmap(bitmap.getWidth(),				bitmap.getHeight(), bitmap.getConfig());		canvas = new Canvas(alertBitmap);		Paint paint = new Paint();		paint.setColor(Color.BLACK);		canvas.drawBitmap(bitmap, new Matrix(), paint);		iv.setImageBitmap(alertBitmap);		//给image设置手指触摸的监听器		iv.setOnTouchListener(new OnTouchListener() {			@Override			public boolean onTouch(View v, MotionEvent event) {				//判断当前手指事件的类型				//按下  移动   离开				switch (event.getAction()) {				case MotionEvent.ACTION_DOWN:// 手指按下屏幕					System.out.println("action down");					break;				case MotionEvent.ACTION_MOVE:// 手指在屏幕上移动					int x = (int) event.getX();					int y = (int) event.getY();					System.out.println("设置("+x+","+y+")透明颜色");					for(int i=-4;i<5;i++){						for(int j=-4;j<5;j++){							try{							//让手指经过的地方图片变成透明							//try是为了让鼠标超出图片之后就没有效果了							alertBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);							}catch (Exception e) {								// TODO: handle exception							}						}					}					iv.setImageBitmap(alertBitmap);					break;				case MotionEvent.ACTION_UP:// 手指离开屏幕					//播放音乐的代码					MediaPlayer.create(getApplicationContext(), R.raw.higirl).start();					break;				}				//true认为事件处理完了,可以进行下个事件				//false是以为没有处理完,相当于直接暂停了,处理代码失效了				return true;//可以重复循环的处理事件			}		});	}}

转载于:https://my.oschina.net/u/2356176/blog/421039

你可能感兴趣的文章
HDU 4049 状态压缩DP
查看>>
SGU 253 计算几何 判定点是否在凸包内
查看>>
Fedora 16 卸载 ATI 显卡驱动
查看>>
Fedora 16 安装 ATI显卡驱动
查看>>
vim 添加代码补全功能(Omnicppcomplete 添加对STL支持)
查看>>
HDU 4013 图论 树的最小表示
查看>>
Ubunu下moderncv加载moderntimeline
查看>>
Ubuntu 12.04安装Jetty
查看>>
Ubuntu 12.04安装OpenCV
查看>>
K-D树 C++实现
查看>>
搜索引擎的预料库 —— 万恶的爬虫
查看>>
网易工程师 Ruheng 一文教你轻松学会 Git
查看>>
文字与编码的奥秘(下)
查看>>
阿里分布式事务框架 GTS 全解析
查看>>
轻量级 Web 框架 Gin 结构分析
查看>>
一个字节的网络漫游故事独白
查看>>
RabbitMQ 消息可靠性、延时队列以及高可用集群
查看>>
分布式系统的可靠性指的是什么 —— 你可能从来就没有认真思考过
查看>>
布隆过滤器过时了,未来属于布谷鸟过滤器?
查看>>
面试题 —— 数字幻方
查看>>