zoukankan      html  css  js  c++  java
  • ScaleGestureDetector缩放view


    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实现移动查看*/

  • 相关阅读:
    python接口自动化-json数据处理
    Fiddler-抓取手机app请求
    monkey常用命令实例
    python接口自动化-Cookie_绕过验证码登录
    python接口自动化-session_自动发文
    python接口自动化-post请求4
    python接口自动化-post请求3
    Python学习笔记第十五周
    Python学习笔记第十四周
    Python学习笔记第十二周
  • 原文地址:https://www.cnblogs.com/xgjblog/p/4050086.html
Copyright © 2011-2022 走看看