Android 撕衣服(刮刮樂游戲)


項目簡單介紹:

  該項目為撕衣服,相似刮刮樂游戲

具體介紹:

用戶啟動項目后。載入一張圖片,當用戶點擊圖片的時候,點擊的一片區域就會消失。從而顯示出在這張圖片以下的圖片
這個小游戲相似與刮獎一樣,刮開塗層就會顯示文字。


這里則是撕掉美女身上的衣服,漏出里面的圖片。

該應用涉及到的知識有:

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

<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="hhh.exercise.smultimedia_d.MainActivity" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/aneiyi" />

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

</RelativeLayout>

這里實際上就是創建兩個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;
            }
        });

    }
}

最后。部署后,隨便點幾下屏幕。效果就是這樣:
這里寫圖片描寫敘述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM