Thứ Năm, 21 tháng 2, 2019

Học lập trình Android - Android - Cử chỉ

Học lập trình Android cung cấp các loại sự kiện màn hình cảm ứng đặc biệt như chụm, chạm hai lần, cuộn, nhấn lâu và nao núng. Đây đều được gọi là cử chỉ.

Android cung cấp lớp GestureDetector để nhận các sự kiện chuyển động và cho chúng tôi biết rằng những sự kiện này có tương ứng với cử chỉ hay không. 

Học lập trình Android chuyên nghiệp
Học lập trình Android chuyên nghiệp

Để sử dụng nó, bạn cần tạo một đối tượng của GestureDetector và sau đó mở rộng một lớp khác bằng GestureDetector. SimpleOnGestureListener để hoạt động như một trình lắng nghe và ghi đè một số phương thức. Cú pháp của nó được đưa ra dưới đây
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ý cử chỉ Pinch

Học lập trình Android cung cấp lớp ScaleGestureDetector để xử lý các cử chỉ như pinch, v.v. Để 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 của nó là như sau -
ScaleGestureDetector SGD;
SGD = new ScaleGestureDetector(this,new ScaleListener());
Tham số đầu tiên là bối cảnh và tham số thứ hai là trình lắng nghe sự kiện. Chúng ta phải xác định trình lắng nghe sự kiện và ghi đè hàm OnTouchEvent để làm cho nó hoạt động. Cú pháp của nó được đưa ra dưới đây
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 các cử chỉ chụm, còn có các phương pháp khác có sẵn để thông báo thêm về các sự kiện chạm. Chúng được liệt kê dưới đây

Không.Phương pháp & mô tả
1getEventTime ()

Phương pháp này có được thời gian sự kiện của sự kiện hiện tại đang được xử lý ..
2getF FocusX ()
Phương pháp này lấy tọa độ X của tiêu điểm của cử chỉ hiện tại.
3getF FocusY ()

Phương pháp này lấy tọa độ Y của tiêu điểm của cử chỉ hiện tại.
4getTimeDelta ()

Phương pháp này trả về chênh lệch thời gian tính bằng mili giây giữa sự kiện chia tỷ lệ được chấp nhận trước đó và sự kiện chia tỷ lệ hiện tại.
5isInProTHER ()

Phương pháp này trả về true nếu một cử chỉ tỷ lệ đang diễn ra ..
6onTouchEvent (sự kiện MotionEvent)
Phương pháp này chấp nhận MotionEvents và gửi các sự kiện khi thích hợp.
Dưới đây là một ví dụ minh họa việc sử dụng lớp ScaleGestureDetector. Nó tạo ra một ứng dụng cơ bản cho phép bạn phóng to và thu nhỏ thông qua độ chụm.

Để thử nghiệm với ví dụ này, bạn có thể chạy nó trên một thiết bị thực tế hoặc trong trình giả lập có bật màn hình cảm ứng.

Các bướcSự miêu tả
1Bạn sẽ sử dụng studio Android để tạo một ứng dụng Android theo gói com.example.sairamkrishna.myapplication.
2Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết.
3Sửa đổi res / layout / Activity_main để thêm các thành phần XML tương ứng
4Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả
Sau đây là nội dung của tệp hoạt động chính được sửa đổi src / MainActivity.java .
package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.graphics.Matrix;
import android.os.Bundle;

import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;

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;
      }
   }
}
Sau đây là nội dung được sửa đổi của xml res / layout / Activity_main.xml.

Ở đây abc chỉ ra logo của hướng dẫn


Sau đây là nội dung của res / value / string.xml .
<resources>
   <string name="app_name>My Application</string>
</resources>
Sau đây là nội dung của tệp AndroidManifest.xml .
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <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>
Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã kết nối thiết bị Android Mobile thực tế của mình với máy tính.

Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Biểu tượng chạy từ thanh công cụ. Đầu ra mẫu phải như thế này

Bây giờ chỉ cần đặt hai ngón tay lên màn hình Android và tách chúng ra một phần và bạn sẽ thấy hình ảnh Android đang phóng to. Nó được hiển thị trong hình dưới đây

Bây giờ một lần nữa đặt hai ngón tay lên màn hình Android và thử đóng chúng lại và bạn sẽ thấy rằng hình ảnh Học lập trình Android hiện đang bị thu hẹp. Nó được hiển thị trong hình dưới đây

Không có nhận xét nào:

Đăng nhận xét

Lập trình Android - RenderScript

Trong chương này, chúng ta sẽ tìm hiểu về Android RenderScript. Thông thường các ứng dụng trên Android được thiết kế để tiêu thụ tài nguyên ...