ANDROID APP
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
กรรมวิธี: การใช้งานมัลติทัช<br />
การสร้างและการตรวจจับอีเวนต์<br />
133<br />
อีเวนต์มัลติทัช เป็นอีเวนต์ที่เกิดจากการสัมผัสจอภาพ พร้อมกันมากกว่าหนึ่งจุด พร้อมๆ กัน<br />
ซึ่งเราสามารถตรวจจับเหตุการณ์นี้ได้ด้วยการใช้ OnTouchListener ที่จะคอยตรวจจับการกระทำบน<br />
จอในแบบต่างๆ ไม่ว่าจะเป็น:<br />
m ACTION_DOWN – เกิดขึ้นเมื่อมีการสัมผัสจอมากกว่าหนึ่งจุดโดยเริ่มการสัมผัสจุดที่ 1<br />
m ACTION_POINTER_DOWN – เกิดขึ้นเมื่อมีการสัมผัสจอจุดที่ 2<br />
m ACTION_MOVE – เกิดขึ้นเมื่อมีการเคลื่อนไหวหลังจากสัมผัสจอทั้ง 2 จุดแล้ว<br />
m ACTION_POINTER_UP – เกิดขึ้นเมื่อมีการปล่อยนิ้วที่สัมผัสจอจุดที่ 2<br />
m ACTION_UP – เกิดขึ้นเมื่อมีการปล่อยนิ้วที่สัมผัสจอภาพจุดที่ 1 และการทำงานของ<br />
เจสเจอร์เสร็จสิ้น<br />
ส่วนนี้จะเป็นการแสดงรูปภาพบนจอ และใช้มัลติทัชเพื่อย่อหรือขยายภาพ และสัมผัสที่ภาพเพื่อ<br />
ลากไปยังตำแหน่งต่างๆ บนจอได้ ในชุดคำสั่งที่ 5.13 จะแสดงแอคทิวิตี้ที่ใช้งาน OnTouchListener<br />
ซึ่งได้กำหนดไว้ในเมธอด onCreate() และเมื่อมีการสัมผัสจอภาพ เมธอด onTouch() ก็จะเริ่ม<br />
ตรวจสอบการเคลื่อนไหวที่เกิดขึ้นตามรายละเอียดดังนี้<br />
m ถ้ามีการสัมผัสที่จอด้วยนิ้วที่ 1 สถานะการสัมผัสจะแสดงค่าเป็นการลาก และตำแหน่งที่<br />
สัมผัสก็จะถูกเก็บไว้ในระบบ<br />
m ถ้ามีการสัมผัสที่จอภาพด้วยนิ้วที่ 2 ในขณะที่นิ้วที่หนึ่งยังคงสัมผัสอยู่ ระบบจะคำนวณ<br />
ระยะห่างระหว่างนิ้วทั้งสอง และถ้าระยะห่างมีค่ามากกว่าที่กำหนดไว้ (ในที่นี้กำหนดไว้ที่<br />
50 พิกเซล) สถานะการสัมผัสจะแสดงถึงการย่อขยายรูปภาพ ซึ่งระบบจะเก็บค่าระยะ<br />
ห่างและจุดกึ่งกลางของระยะห่างทั้ง 2 เอาไว้<br />
m ถ้ามีการเคลื่อนไหวของนิ้วที่สัมผัสอยู่ทั้ง 2 นิ้ว อาจเป็นนิ้วใดนิ้วหนึ่ง หรือทั้ง 2 นิ้ว<br />
พร้อมๆ กัน สถานะการสัมผัสจะแสดงค่าเป็นการทำงานแบบมัลติทัช<br />
m ถ้าปล่อยนิ้วทั้งหมดที่สัมผัสจอภาพ สถานะการสัมผัสก็จะแสดงค่าว่าไม่มีการเคลื่อนไหว<br />
ชุดคำสั่งที่ 5.13 src/com/cookbook/multitouch/MultiTouch.java<br />
package com.cookbook.multitouch;<br />
import android.app.Activity;<br />
import android.graphics.Matrix;<br />
import android.os.Bundle;<br />
import android.util.FloatMath;<br />
import android.view.MotionEvent;<br />
import android.view.View;<br />
import android.view.View.OnTouchListener;<br />
import android.widget.ImageView;