public class ScaleGesture implements OnScaleGestureListener {

private float beforeFactor;
private float mPivotX;
private float mPivotY;
private View mVSouce;
private boolean isFillAfter;

public void setSourceView(View destinyView) {
mVSouce = destinyView;
}

@Override
public boolean onScale(ScaleGestureDetector detector) {
if (checkIsNull()) {
return false;
}
final float factor = detector.getScaleFactor();
Animation animation = new ScaleAnimation(beforeFactor, factor,
beforeFactor, factor, mPivotX, mPivotY);
animation.setFillAfter(true);
mVSouce.startAnimation(animation);
beforeFactor = factor;
return false;
}

@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
if (checkIsNull()) {
return false;
}
beforeFactor = 1f;
mPivotX = detector.getFocusX() - mVSouce.getLeft();
mPivotY = mVSouce.getTop() + (mVSouce.getHeight() >> 1);
return true;
}

@Override
public void onScaleEnd(ScaleGestureDetector detector) {
if (checkIsNull()) {
return;
}
final float factor = detector.getScaleFactor();
final int nWidth = (int) (mVSouce.getWidth() * factor);
final int nHeight = (int) mVSouce.getHeight();
final int nLeft = (int) (mVSouce.getLeft() - ((nWidth - mVSouce
.getWidth()) * (mPivotX / mVSouce.getWidth())));
final int nTop = (int) mVSouce.getTop();
if (isFillAfter) {
mVSouce.layout(nLeft, nTop, nLeft + nWidth, nTop + nHeight);
}
// MUST BE CLEAR ANIMATION. OTHERWISE WILL BE FLICKER
// if can not clear animation the layout will keep the size
// mVSouce.clearAnimation();
}

public boolean checkIsNull() {
return mVSouce == null ? true : false;
}

/**
 * if parameter is true that keeping same scale when next scaling.
 * 
 * @param isFill
 */
public void setFillAfter(boolean isFill) {
isFillAfter = isFill;
}
}
/*在activity里面定义变量*/
ScaleGesture sg = new ScaleGesture();
ScaleGestureDetector detector;
/*在oncreat方法里面*/
detector = new ScaleGestureDetector(你要缩放的view.getContext(), sg);
sg.setSourceView(你要缩放的view);
/*可以实现缩放,但移动view实现的不好,可以使用scrollby实现移动查看*/

ScaleGestureDetector缩放view的更多相关文章

  1. android的ScaleGestureDetector缩放类详解

    文章由多出组合,它们来自: http://elvajxw.iteye.com/blog/1308452 http://www.cnblogs.com/lknlfy/archive/2012/03/11 ...

  2. 缩放手势 ScaleGestureDetector 源码解析,这一篇就够了

    其实在我们日常的编程中,对于缩放手势的使用并不是很经常,这一手势主要是用在图片浏览方面,比如下方例子.但是(敲重点),作为 Android 入门的基础来说,学习 ScaleGestureDetecto ...

  3. View的平移、缩放、旋转以及位置、坐标系

    原创 2015年05月12日 13:15:29 标签: Android / Scroll / Scale / Translation / Rotation 24733 Android开发中,经常会接触 ...

  4. 缩放系列(三):一个可以手势缩放、拖拽、旋转的layout

    弄了一个下午,终于搞出来了,PowerfulLayout 下面是一个功能强大的改造的例子: 可以实现以下需求: 1.两个手指进行缩放布局 2.所有子控件也随着缩放, 3.子控件该有的功能不能丢失(像b ...

  5. 缩放系列(二):所有子控件也随着缩放、手势缩放、多点触控layout

    下面是一个功能强大的改造的例子: 可以实现以下需求: 1.两个手指进行缩放布局 2.所有子控件也随着缩放, 3.子控件该有的功能不能丢失(像button有可被点击的功能,缩放后不能丢失该功能) 运行效 ...

  6. Android查缺补漏(View篇)--自定义 View 的基本流程

    View是Android很重要的一部分,常用的View有Button.TextView.EditView.ListView.GridView.各种layout等等,开发者通过对这些View的各种组合以 ...

  7. Android 手势识别—缩放

    上一篇讲解了手势识别中的点击和双击事件的识别,用到的是GestureDetector类和GestureDetectorCompat类,用于监听用户触摸屏幕中的简单动作. 缩放 基本用法如下,可以通过缩 ...

  8. 详解iOS开发之自定义View

    iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加 ...

  9. 微信小程序movable-view移动图片和双指缩放

    先从movable-view开始说起吧. movable-view是小程序自定义的组件.其描述为:"可移动的视图容器,在页面中可以拖拽滑动". 官方文档地址:https://mp. ...

随机推荐

  1. 使用Putty连接VirtualBox的Ubuntu

    从vbox中安装了ubuntu server,然后用ssh连过去,发现有一个错误:server unexpectedly closed network connection.猛然发现,ssh没有安装. ...

  2. 剑指offer--面试题14--收获

    按照作者的说法,作为应届毕业生的我来说,如果能写出初级程序员的参考代码来解决面试题14就可认为过关了... 参考代码如下: void ReorderOddEven_1(int *pData, unsi ...

  3. WCF 基础

    ServiceModel 配置元素 Binding 配置元素: 客户端Web.config: <?xml version="1.0" encoding="utf-8 ...

  4. 不安装Oracle客户端远程连接Orcale数据库

    本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端. 下载地址(此处提供的是官方各版本下载地址): Windows 32位系统中使用的客户端下载地址其他系统环境中使用的客户端下载 ...

  5. eclipse 开发技巧

    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xm ...

  6. VisualSvn+TortoiseSVN的安装说明

    一.VisualSvn安装及简单使用 下载VisualSvn:VisualSVN-Server-2.5.5.msi 系统:Win7系统 安装步骤: 1.下载VisualSVN-Server-2.5.5 ...

  7. excel公式应用大全

    excel公式应用大全 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格. 应用举例:如 ...

  8. 李洪强iOS开发之上传照片时英文改中文

    今天在做项目的时候,有一个功能是上传照片选择系统相册的照片,或者拍照上传照片,但是页面上的文字是英文的, 需求想改成中文的,解决方法是在 info.plist里面添加 Localized resour ...

  9. 网上图书商城项目学习笔记-011Book模块查询(分页)

    一.流程分析 1.图书模块 2.分布分析 二.代码 1.view层 1)list.jsp <%@ page language="java" import="java ...

  10. Windows下Sublime Text 默认打开方式问题解决办法

    注册表的解决办法: 删除 HKEY_CURRENT_USER\Software\Classes\Applications下的Sublime_Text.exe项.你就发现可以设置为默认打开方式了