1. Trang chủ
  2. » Thể loại khác

gesture trong android

11 122 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 381,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

gesture trong android tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực kinh t...

Trang 1

Gesture trong Android

Android cung cấp nhiều kiểu sự kiện touch màn hình như những thao tác vuốt, kéo, thả, chạm, … Chúng còn được biết với tên gọi là Gesture, và có thể nói đây là phần hay nhất của Smartphone

Android cung cấp lớp GestureDetector để thu nhận các sự kiện di chuyển và nói cho chúng

ta rằng các sự kiện này tương ứng với các Gesture hoặc không Để sử dụng nó, bạn cần tạo một đối tượng GestureDetector và sau đó kế thừa lớp khác

vớiGestureDetector.SimpleOnGestureListener để hoạt động như là một Listener và ghi

đè một số phương thức Cú pháp như sau: −

GestureDetector myG; myG = new GestureDetector( this , new Gesture());

class Gesture extends GestureDetector.SimpleOnGestureListener{ public boolean onSingleTapUp(MotionEvent ev) { } public void

onLongPress(MotionEvent ev) { } public boolean

onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float

distanceY) { } public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { } } }

Xử lý Pinch Gesture

Android cung cấp lớp ScaleGestureDetector để xử lý các Gesture như pinch, … Để sử dụng nó, bạn cần khởi tạo một đối tượng của lớp này Cú pháp là: −

ScaleGestureDetector SGD; SGD = new ScaleGestureDetector( this , new

ScaleListener());

Tham số đầu tiên là ngữ cảnh và tham số thứ hai là Event Listener Chúng ta phải định

nghĩa Event Listener và ghi đè một hàm là OnTouchEvent Cú pháp như sau: −

public boolean onTouchEvent(MotionEvent ev) { SGD.onTouchEvent(ev);

return true ; } private class ScaleListener extends

ScaleGestureDetector.SimpleOnScaleGestureListener { @Override public boolean onScale(ScaleGestureDetector detector) { float scale =

detector.getScaleFactor(); return true ; } }

Ngoài Pinch Gesture, còn có một số phương thức khác để thông báo các sự kiện touch khác Đó là: −

Trang 2

Stt Phương thức & Miêu tả

1 getEventTime()

Phương thức này lấy thời gian sự kiện của sự kiện hiện tại đang được xử lý

2 getFocusX()

Phương thức lấy tọa độ X của tiêu điểm Gesture hiện tại

3 getFocusY()

Phương thức lấy tọa độ Y của tiêu điểm Gesture hiện tại

4 getTimeDelta()

Phương thức này trả về sự khác nhau về thời gian giữa scale event trước và scale event sau

5 isInProgress()

Phương thức này trả về true nếu một scale gesture là đang tiến hành

6 onTouchEvent(MotionEvent event)

Phương thức này chấp nhận MotionEvents và gửi sự kiện khi thích hợp

Ví dụ

Ví dụ sau minh họa sự sử dụng của lớp ScaleGestureDetector Nó tạo một ứng dụng cơ bản để bạn phóng to và thu nhỏ thông qua Pinch Gesture

Để thử nghiệm ví dụ này, bạn cần chạy trên thiết bị thật sự hoặc trong một Emulator với sự kiện touch màn hình được kích hoạt

Sau đây là nội dung của Main Activity file đã được sửa đổi: src/MainActivity.java

package com.example.sairamkrishna.myapplication; import

android.app.Activity; import android.content.Intent; import

android.content.IntentFilter; import android.graphics.Bitmap; import

android.graphics.Matrix; import android.os.BatteryManager; import

android.os.Bundle; import android.view.Menu; import android.view.MenuItem;

import android.view.MotionEvent; import android.view.ScaleGestureDetector;

Trang 3

import android.view.SurfaceHolder; import android.view.SurfaceView; import

android.view.View; import android.widget.ArrayAdapter; import

android.widget.ImageView; import android.widget.TextView; import

android.widget.Toast; import java.util.ArrayList; import java.util.Set;

public class MainActivity extends Activity { private ImageView iv;

private Matrix matrix = new Matrix(); private float scale = 1f ;

private ScaleGestureDetector SGD; @Override protected void

onCreate(Bundle savedInstanceState) {

super onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv=(ImageView)findViewById(R.id.imageView); SGD = new

ScaleGestureDetector( this , new ScaleListener()); } public boolean

onTouchEvent(MotionEvent ev) { SGD.onTouchEvent(ev); return

true ; } private class ScaleListener extends ScaleGestureDetector SimpleOnScaleGestureListener { @Override public boolean

onScale(ScaleGestureDetector detector) { scale *=

detector.getScaleFactor(); scale = Math.max( 0.1f , Math.min(scale,

5.0f )); matrix.setScale(scale, scale);

iv.setImageMatrix(matrix); return true ; } }

getMenuInflater().inflate(R.menu.menu_main, menu); return true ; }

//noinspection SimplifiableIfStatement if (id == R.id.action_settings)

{ return true ; } return

super onOptionsItemSelected(item); } }

Bạn sửa đổi nội dung của res/layout/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:paddingLeft= "@dimen/activity_horizontal_margin"

android:paddingRight= "@dimen/activity_horizontal_margin"

android:paddingTop= "@dimen/activity_vertical_margin"

android:paddingBottom= "@dimen/activity_vertical_margin"

tools:context= ".MainActivity" > <TextView android:text= "Gestures

Example" android:layout_width= "wrap_content"

android:layout_height= "wrap_content" android:id= "@+id/textview"

android:textSize= "35dp" android:layout_alignParentTop= "true"

android:layout_centerHorizontal= "true" /> <TextView

android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "Tutorials point" android:id= "@+id/textView"

android:layout_below= "@+id/textview"

android:layout_centerHorizontal= "true" android:textColor= "#ff7aff24"

android:textSize= "35dp" /> <ImageView

Trang 4

android:layout_width= "wrap_content" android:layout_height= "wrap_content"

android:id= "@+id/imageView" android:src= "@drawable/abc"

android:scaleType= "matrix" android:layout_below= "@+id/textView"

android:layout_alignParentLeft= "true"

android:layout_alignParentStart= "true"

android:layout_alignParentBottom= "true"

android:layout_alignParentRight= "true"

android:layout_alignParentEnd= "true" /> </RelativeLayout>

Và đây là nội dung của res/values/string.xml

<resources> <string name= "app_name>My Application </string> <string

name= "hello_world" >Hello world!</string> <string

name= "action_settings" >Settings</string> </resources>

Tiếp theo là nội dung của AndroidManifest.xml file

<?xml version= "1.0" encoding = "utf-8" ?> <manifest

xmlns:android= "http://schemas.android.com/apk/res/android"

package= "com.example.gestures" android:versionCode= "1"

android:versionName= "1.0" > <application android:allowBackup= "true"

android:icon= "@drawable/ic_launcher" android:label= "@string/app_name"

android:theme= "@style/AppTheme" > <activity

android:name= "com.example.sairamkrishna.myapplicationMainActivity"

android:label= "@string/app_name" > <intent-filter>

<action android:name= "android.intent.action.MAIN" /> <category

android:name= "android.intent.category.LAUNCHER" /> </intent-filter>

</activity> </application> </manifest>

Chạy ứng dụng Android vừa tạo ở trên

Trang 5

Chọn thiết bị mobile sẽ hiển thị màn hình mặc định là: −

Trang 7

Bây giờ đặt hai ngón tay qua màn hình và sau đó di chuyển hai ngón tay sang hai bên, bạn

sẽ thấy hình ảnh đang được phóng to hay thu nhỏ tùy theo cách bạn di chuyển Hình dưới minh họa trường hợp phóng to −

Trang 9

Hình sau minh họa trường hợp thu nhỏ −

Ngày đăng: 02/12/2017, 07:09

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN