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:
- 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
- Siêu tổng hợp android code snippets (cập nhật thường xuyên)
- Lập trình với Recyclerview trong Android – Bài 2 | dotrinh.com
- Chuyển một đối tượng sang Json trong Android
- Phóng to thu nhỏ trong Android với ScaleGestureDetector
- Truyền dữ liệu giữa các Activity trong android
- Tạo seekbar và kiến thức hữu ích về seekbar trong Android
- Làm việc với font trong Android
- Truyền dữ liệu giữa 2 fragment trong android
- Show Indicator trong Android | Hiển thị indicator trong Android
- Gửi dữ liệu đến BLESerial3 bằng Bluetooth LE Android
- Làm sao thiết kế nhiều màn hình trong Android
- Vòng đời Acivity trong android cơ bản
- Hiểu về cách tổ chức file, bộ nhớ của app Android

