Android实现图片自动翻页+手指缩放的功能

本文结合之前关于页面翻转、自动翻转和双指缩放的知识,详细介绍了如何在Android中创建一个类似手机相册的功能,包括图片自动翻页和双指缩放的手势操作。通过构建手指缩放类,并在Activity中设置布局和代码,成功实现了该功能。
摘要由CSDN通过智能技术生成

Android实现图片自动翻页+手指缩放的功能

之前的几篇博文介绍了Android中简单实现页面翻转和自动翻转的功能Android中实现双指缩放的功能Android中实现计时器的功能,现在我们来把它们综合使用一下,写一个模仿手机相册的功能,能够实现图片自动翻页+手指缩放的功能

1. 构建好手指缩放的类,Android中实现双指缩放的功能,本博文中有详细介绍,为了减少篇幅就不在这里一一解释了!

package com.example.mygesture;

import android.util.Log;
import android.view.View;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;

public class DragScaleView extends View {
   
    //监听图片缩放
    private ScaleGestureDetector mScaleDetector;
    //监听图片移动
    private GestureDetector mGestureDetector;
    private int viewWidth, viewHeight;
    //组件尺寸只需要获取一次
    private boolean hasGetViewSize;
    //当前的缩放比例
    private float mScaleFactor = 1.0f;
    private Paint bmpPaint = new Paint();
    //图片资源
    private Bitmap bmp;
    private float widthScale, heightScale;
    //绘制图片的起始位置
    private float mPosX, mPosY;
    //图片的宽高
    private int bmpWidth, bmpHeight;

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

    private void init(Context context) {
   
        mScaleDetector = new ScaleGestureDetector(context, new SimpleScaleListenerImpl());
        mGestureDetector = new GestureDetector(context, new SimpleGestureListenerImpl());
    }

    public void setImageResource(int id) {
   
        bmp = BitmapFactory.decodeResource(getResources(), id);
        bmpWidth = bmp.getWidth();
        bmpHeight = bmp.getHeight();
        Log.d("Data", "bmpWidth: " + bmpWidth + "\t" + "bmpHeight: " + bmpHeight);

        initViewSize();
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
   
        super.onDraw(canvas);
        if (bmp == null) {
   
            return;
        }
        if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值