Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android簡易實戰教程--第三十話《撕衣美女》

Android簡易實戰教程--第三十話《撕衣美女》

編輯:關於Android編程

此篇邪惡一些,給單身屌絲發點“福利”,通過圖片的繪制,給美女脫掉衣服。

原理:圖片覆蓋圖片,通過畫筆對頂端的圖片做一些特效處理,即手指觸摸的地方,設置為透明。即可顯示最底部的美女圖片。

布局:一張內衣,一張外衣

 



    
    


代碼如下:

 

 

package com.itandroid.syf;

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 Bitmap bmCopy;
	private ImageView iv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi);
		
		// 1.創建一個與原圖一模一樣大小的bitmap對象
		bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());

		// 2.創建畫筆對象
		Paint paint = new Paint();
		// 3.創建畫板對象
		Canvas canvas = new Canvas(bmCopy);
		// 4.開始作畫
		canvas.drawBitmap(bmSrc, new Matrix(), paint);
		
		iv = (ImageView) findViewById(R.id.iv);
		
		//添加圖片觸摸事件
		iv.setOnTouchListener(new OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
				case MotionEvent.ACTION_MOVE:
					//獲取x和y的坐標
					int x = (int) event.getX();
					int y = (int) event.getY();
					//算法
					for(int i = -5; i <= 5; i++){//擴大坐標點的范圍
						for(int j = -5; j <= 5; j++){
							//把用戶劃過的坐標置為透明色
							//改變指定的像素顏色
							if(Math.sqrt(i*i + j*j) <= 5){
								//防止角標越界
								if(x + i < bmCopy.getWidth() && y + j < bmCopy.getHeight() && x + i >= 0 && y + j >= 0){
									//直接指定x和y的坐標置為第三個參數的顏色。即透明色
									bmCopy.setPixel(x + i, y + j, Color.TRANSPARENT);
									// 繪制後,再次設置最新的圖片情況,刷新顯示。
									iv.setImageBitmap(bmCopy);
								}
							}
						}
					}
					break;

				}
				return true;
			}
		});
	}


}

運行程序:

 

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved