Android 撕衣服(刮刮樂遊戲)

來源:互聯網
上載者:User

標籤:不能   split   imageview   ide   move   app   getheight   螢幕   控制項   

項目簡介:

  該項目為撕衣服,類似刮刮樂遊戲

詳細介紹:

使用者啟動項目後,載入一張圖片,當使用者點擊圖片的時候,點擊的一片地區就會消失,從而顯示出在這張圖片下面的圖片
這個小遊戲類似與刮獎一樣,刮開塗層就會顯示文字。
這裡則是撕掉美女身上的衣服,漏出裡面的圖片。

該應用涉及到的知識有:
  • 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;            }        });    }}

最後,部署後,隨便點幾下螢幕,效果就是這樣:

Android 撕衣服(刮刮樂遊戲)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.