PhotoView-保持缩放和xy坐标

ong

在Android应用程序上使用PhotoView Picasso我想通过单击一个按钮来切换两个图像,同时保持缩放和xy坐标。我可以保持缩放,但是很难保持xy坐标,因为两个图像具有不同的分辨率,并且缩放我必须保持相对的xy坐标当我切换到新图像时,如果不保持xy坐标,则缩放后的图像始终位于中心。下面是我当前的代码,仅实现缩放。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

    // ... some basic stuffs here

    mRequestCreator1 = Picasso.get().load(mImageUri1);
    mRequestCreator2 = Picasso.get().load(mImageUri2);
    mRequestCreator1.into(mPhotoView);

    mBtnSwitch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final float prevScale = mPhotoView.getScale();
            // MUST use the callback because of timing issue.
            Callback callback = new Callback() {
                @Override
                public void onSuccess() { mPhotoView.setScale(prevScale); }

                @Override
                public void onError(Exception e) { e.printStackTrace(); }
            };

            if(sPrevIsOriginal) {
                mRequestCreator2.into(mPhotoView, callback);
            } else {
                mRequestCreator1.into(mPhotoView, callback);
            }
            sPrevIsOriginal = !sPrevIsOriginal;
        }
    });
}
ong

经过大量的试验和错误,我找到了解决方法。您必须使用来获取先前图像的补充矩阵getSuppMatrix(),然后使用将该补充矩阵应用于新图像setSuppMatrix()使用补充矩阵很重要。切勿尝试通过操作getImageMatrix()来执行此操作getDisplayMatrix(),否则将导致其不起作用或代码变得更加复杂。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章