更換衣服游戲的原理:原本有2個圖片,一個原圖片,一個更被換了衣服以后的圖片,兩個圖片放在一起,原圖片放在上面,識訓動的時候上面圖片的像素點設定成透明,下面的圖片像素點顯示出來了,
布局檔案
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=".MainActivity" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/xiatu" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/shangtu" />
</RelativeLayout>
MainActivity.java
package com.ldw.siyifu;
import android.R.color;
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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取到原圖片
Bitmap bitSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi);
//創建外衣副本
final Bitmap bitCopy = Bitmap.createBitmap(bitSrc.getWidth(), bitSrc.getHeight(), bitSrc.getConfig());
Paint paint = new Paint();
Canvas canvas = new Canvas(bitCopy);
canvas.drawBitmap(bitSrc, new Matrix(), paint);
final ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bitCopy);
iv.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch(action){
//觸摸螢屏
case MotionEvent.ACTION_DOWN:
break;
//螢屏上移動
case MotionEvent.ACTION_MOVE:
int x = (int) event.getX();
int y = (int) event.getY();
//限制編輯的區域,在圖片的區域內才允許編輯
if(x <= bitCopy.getWidth() && y<= bitCopy.getHeight()){
//隱藏不止一個像素點,把周圍的像素點都隱藏
for(int i = -5; i <= 5; i++){
for(int j = -5; j <= 5; j++){
//涂抹的像素點是一個圓形
if( i*i + j*j <= 25){
//防止越界,上下左右設定邊界
if( x + i < bitCopy.getWidth() && y + j < bitCopy.getHeight() && x + i > 0 && y + j > 0){
//用戶滑動過的坐標設定成透明
bitCopy.setPixel(x + i , y + j, Color.TRANSPARENT);
iv.setImageBitmap(bitCopy);
}
}
}
}
}
break;
//離開螢屏
case MotionEvent.ACTION_UP:
break;
}
//true:告訴系統,這個事件由自己處理,
//false:告訴系統,事件由自己處理,系統會把觸摸事件發送到iamgeView的父節點
return true;
}
});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/220654.html
標籤:其他
上一篇:iOS 自定義可拖拽 panel
