20%

KHUYẾN MẠI

Giảm giá khi nâng cấp web năm 2021

Lập trình phóng to thu nhỏ ảnh pinch in – pinch out trong Android

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. Đọc để nếu không hiểu thì hỏi mình.

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

Các bài viết không xem thì tiếc:

《Chia sẻ kiến thức này là người hào sảng》
---------------------------------------

Mình vừa đăng 1 video lên Youtube theo phong cách YOLO cách đây vài ngày trong lúc dịch COVID-19 vẫn kéo dài này.

Nếu có thời gian thì xem giúp mình có ổn không nhé? Bạn có thể nhận xét video trong Youtube cũng được nha!

LINK VIDEO: https://youtu.be/kQxUIpvplYc

Nếu bận thì lưu lại xem sau, mời bạn đọc bài khác

---------------------------------------

Thảo luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 
 
 
 
Facetime iPhone

Main Menu