撕衣服案例

撕衣服的原理

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

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

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



撕衣服案例

<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"
    tools:context=".MainActivity" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/after" />

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

</RelativeLayout>



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;//可以重复循环的处理事件
			}
		});
	}

}



你可能感兴趣的:(撕衣服案例)