Android放大和缩小图片
创始人
2024-10-07 18:01:05
0

要在Android中放大或缩小图片,可以使用Matrix类来进行图像变换。以下是一个示例代码,演示如何使用Matrix来放大和缩小图片。

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;

public class ZoomableImageView extends ImageView {

    private Matrix matrix;
    private float scale = 1f;
    private ScaleGestureDetector scaleGestureDetector;

    public ZoomableImageView(Context context) {
        super(context);
        init(context);
    }

    public ZoomableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    private void init(Context context) {
        matrix = new Matrix();
        scaleGestureDetector = new ScaleGestureDetector(context, new ScaleListener());
    }

    @Override
    protected void onDraw(android.graphics.Canvas canvas) {
        // Apply the scale transformation to the matrix
        matrix.setScale(scale, scale);
        setImageMatrix(matrix);

        super.onDraw(canvas);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Pass touch events to the scale gesture detector
        scaleGestureDetector.onTouchEvent(event);
        return true;
    }

    private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            // Get the scale factor from the detector
            float scaleFactor = detector.getScaleFactor();

            // Apply the scale factor to the current scale
            scale *= scaleFactor;

            // Limit the scale within certain bounds if needed
            scale = Math.max(0.1f, Math.min(scale, 5.0f));

            // Invalidate the view to trigger a redraw
            invalidate();

            return true;
        }
    }
}

要使用这个自定义的ZoomableImageView,只需在布局文件中将ImageView替换为ZoomableImageView


在这个示例中,我们使用ScaleGestureDetector来检测放大和缩小手势。在onScale方法中,我们通过获取缩放因素来调整图像的缩放比例,然后使用invalidate方法触发重新绘制。

相关内容

热门资讯

第一分钟模板!心悦游戏辅助器,... 第一分钟模板!心悦游戏辅助器,赣牌圈控制牌型,存在挂教程(有挂教学)-哔哩哔哩第一分钟模板!心悦游戏...
透视私人房!模拟器打开hhpo... 透视私人房!模拟器打开hhpoker(透视)开挂辅助app(确实是真的挂)-哔哩哔哩1、该软件可以轻...
七分钟教材!心悦填大坑辅助器免... 七分钟教材!心悦填大坑辅助器免费下载,有没有人会衢州都莱的辅助,黑科技教程(有挂方针)-哔哩哔哩1、...
透视黑科技!大菠萝免费辅助,w... 透视黑科技!大菠萝免费辅助,wepoker破解工具,项目教程(好像真的有挂)-哔哩哔哩1)大菠萝免费...
透视专用!wepoker私人局... 透视专用!wepoker私人局辅助器怎么用(透视)开挂辅助工具(确实存在有挂)-哔哩哔哩1、wepo...
透视有挂!wepoker透视脚... 透视有挂!wepoker透视脚本苹果版,竞技联盟透视插件,教材教程(都是真的有挂)-哔哩哔哩1、不需...
三分钟法门!越乡有辅助软件,四... 三分钟法门!越乡有辅助软件,四川途游辅助软件下载,揭秘教程(有挂技巧)-哔哩哔哩1、起透看视 四川途...
透视黑科技!线上德州的辅助器是... 透视黑科技!线上德州的辅助器是什么(透视)开挂辅助攻略(切实真的有挂)-哔哩哔哩1、玩家可以在线上德...
透视能赢!pokernow辅助... 透视能赢!pokernow辅助控制,wepoker有没有辅助,阶段教程(本来真的有挂)-哔哩哔哩1、...
九分钟窍门!乐玩游戏辅助工具,... 九分钟窍门!乐玩游戏辅助工具,新芒果监利开机贴吧,黑科技教程(有挂方法)-哔哩哔哩小薇(透视辅助)致...