1 Tạo 1 file giao diện xml Android activity_main_pinch.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginStart="156dp" android:layout_marginTop="78dp" android:src="@drawable/bigface" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
2 Tạo 1 Activity tên là PinchImgDemo
Trong đây dùng đối tượng ScaleGestureDetector để lắng nghe sự kiện pinch in và pinch out, sau đó thì điều khiển cái ảnh ấy cho to ra hoặc nhỏ đi.
import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.widget.ImageView; public class PinchImgDemo extends AppCompatActivity { private ScaleGestureDetector mScaleGestureDetector; private float mScaleFactor = 1.0f; private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_pinch); mImageView = findViewById(R.id.imageView); mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener()); } public boolean onTouchEvent(MotionEvent motionEvent) { mScaleGestureDetector.onTouchEvent(motionEvent); return true; } private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { @Override public boolean onScale(ScaleGestureDetector scaleGestureDetector) { mScaleFactor *= scaleGestureDetector.getScaleFactor(); mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 10.0f)); mImageView.setScaleX(mScaleFactor); mImageView.setScaleY(mScaleFactor); return true; } } }
Hướng dẫn này lập trình trên Android 3.2 mới nhất
Tham khảo ví dụ phức tạp hơn:
https://github.com/dotrinh-PM/Canvas/commit/981b94ec2fab5a57c739569c82ef2515cad250a5
Các bài viết không xem thì tiếc:
- Phóng to thu nhỏ trong Android với ScaleGestureDetector
- Chuyển một đối tượng sang Json trong Android
- Lập trình với Recyclerview trong Android – Bài 1 | dotrinh.com
- Lập trình với Recyclerview trong Android – Bài 3 | dotrinh.com
- Show Indicator trong Android | Hiển thị indicator trong Android
- Tạo seekbar và kiến thức hữu ích về seekbar trong Android
- Lập trình với Recyclerview trong Android – Bài 2 | dotrinh.com
- Truyền dữ liệu giữa 2 fragment trong android
- Cách dùng Eventbus để truyền dữ liệu trong Android
- Làm việc với font trong Android
- KHÔNG CÀI ĐƯỢC APP TRONG ANDROID
- Gửi dữ liệu đến BLESerial3 bằng Bluetooth LE Android
- Cách dùng AsyncTask trong Android
- Hiểu về cách tổ chức file, bộ nhớ của app Android
- Siêu tổng hợp android code snippets (cập nhật thường xuyên)