Android Gallery图片双击放大倍数的算法

图片双击放大倍数和图片大小、显示图片的view大小,及图片当前的scale大小均有关系。

为了避免图片放大过大,设置了一个放大倍数的最大限制SCALE_LIMIT,目前该值为4.

具体算法如下所示:

图片的宽和高分别记为:imageW imageH

显示图片的view宽和高分别记为:viewW viewH

几个重要的比例记为:

scale_1 = viewW / imageW;
scale_2 = viewH / imageH;
scale_3 = viewW / imageH;
scale_4 = viewH / imageW;

如果当前图片的宽高比>2或者<0.5,则按照如下算法计算放大倍数zoomRate:

(1)当前scale = min(scale_1, scale_2);

(2)zoomRate = min(max(scale_1, scale_2), max(scale_3, scale_4));

(3)如果zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;

(4)如果scale >= zoomRate,则保留(1)的结果从第(2)步重新计算zoomRate值,否则跳至(6)

zoomRate = max(max(scale_1, scale_2), max(scale_3, scale_4));

(5)如果zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;

(6)此时zoomRate值即是图片应该放大的倍数。

如果当前图片的宽高比<=2或者>=0.5,则按照如下算法计算放大倍数zoomRate:

(1)当前scale = min(scale_1, scale_2);

(2)largerInitRate = max(min(scale_1, scale_2), min(scale_3, scale_4));

(3)如果largerInitRate > SCALE_LIMIT,则largerInitRate = SCALE_LIMIT;

(4)zoomRate = min(scale_2, largerInitRate * 2.0f);

(5)如果zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;

(6)如果scale >= zoomRate,则保留前3步的结果,从第(4)步重新计算zoomRate值,否则跳至(8)

zoomRate = largerInitRate * 2.0f;

(7)如果zoomRate > SCALE_LIMIT,则zoomRate = SCALE_LIMIT;

(8)此时zoomRate值即是图片应该放大的倍数。

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui

时间: 2024-12-25 06:21:53

Android Gallery图片双击放大倍数的算法的相关文章

android 图片双击放大倍数的算法

图片双击放大倍数和图片大小.显示图片的view大小,及图片当前的scale大小均有关系. 为了避免图片放大过大,设置了一个放大倍数的最大限制SCALE_LIMIT,目前该值为4. 具体算法如下所示: 图片的宽和高分别记为:imageW imageH 显示图片的view宽和高分别记为:viewW viewH 几个重要的比例记为: scale_1 = viewW / imageW scale_2 = viewH / imageH scale_3 = viewW / imageH scale_4 =

Android——Gallery 图片拖动效果

1.XML文件 <?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/gallery01"    android:layout_width="fill_parent"    android:la

给大家分享一个图片双击放大,双击缩小的第三方库

mwphotobrowser可以通过提供uiimage对象显示一个或多个图像,或URL的Web图像文件,或图书馆资产.照片处理下载和缓存浏览器从Web照片无缝.照片可以放大和平移,和可选的标题可以显示(可定制).浏览器也可以用于允许用户选择一个或更多的照片可以使用网格或主视图. https://github.com/mwaterfall/MWPhotoBrowser

Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能

首先推荐一下鸿洋大大的打造个性的图片预览与多点触控视频教程,这套教程教我们一步一步实现了多点触控实现对图片的平移和缩放的功能,这篇文章我将在鸿洋大大的基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例 实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释 public class ZoomImageView extends ImageView implements

(四)双击放大与缩小图片

自定义ZoomImageView实现到这里,基本上完成一大半了.在上一篇又给它添加了自由移动的功能.如果你没读过,可以点击下面的链接:http://www.cnblogs.com/fuly550871915/p/4940103.html 在这篇文章中,就来实现双击放大或者缩小图片.用到的知识点就是GestureDetector,用它来监测双击事件.至于双击后怎么缩放图片,相信在前面几篇文章中,你都已经很熟悉了.但是难点是,我们要求双击后缓慢的放大或者缩小,而不是一下子就放大到或者缩小到目标值.这

Android中实现Gallery 点击放大

图片放大的思路: 第一.可以通过Matrix对象来变换图像,在选择的时候放大,在失去焦点的时候,缩小到原来的大小. double scale = 1.2;int width = bm.getWidth();int height = bm.getHeight();Log.i("size:", width+"");float scaleWidth = (float)(scale*width);float scaleHeight = (float)(scale*heigh

Android 图片的放大缩小拖拉

package com.example.ImageView; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.*; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask;

Android 本地/网路下载图片实现放大缩小

 Android 本地加载/网路下载图片实现放大缩小拖拉效果,自定义控件. package com.example.ImageViewCustom; import android.app.Activity; import android.os.Bundle; import com.example.ImageViewCustom.CustomControl.MImageView; public class MyActivity extends Activity { MImageView mImag

Android浏览图片,点击放大至全屏效果

最近做一个项目类似于QQ空间,做到照片浏览的功能,对于QQ空间中点击图片放大至全屏,感觉效果很赞,于是也做了个类似的效果.如下. 我不知道QQ那个是怎么做的,我的思路如下: 首先,从图片缩略界面跳转到图片详情页面,应该是从一个Activity跳转到另外一个Activity,应该图片详情页面也有很多操作,用View或者Dialog不是很好.所以现在难点就是,如何使得前一个界面的ImageView在另外一个界面做缩放切割动画. 一般缩略界面的ImageView的是如上图所示的正方形的,并且是CENT