因为需要一个支持手势缩放和平移的控件,所以上github找到了这个直接拿来用了photoview
我是需要定时网络请求图片然后再放到photoview,需要记录下图片的偏移量以及大小不然每次请求之后图片都会还原成原大小,搜索了一下没找到后来看了看源码找到了办法
在photoviewAttacher里面可以看到有这么一段,显然就知道了我们只需要获取到suppmatrix,然后再还原即可
//float scale = photoView.getScale();
//int[] offset = new int[2];
//float[] values = new float[9];
Matrix matrix = new Matrix();
photoView.getSuppMatrix(matrix);
//matrix.getValues(values);
// x方向上的偏移量(单位px)
//offset[0] = (int) values[2];
// y方向上的偏移量(单位px)
//offset[1] = (int) values[5];
//Log.d("TAG","offset[0]"+offset[0]);
//Log.d("TAG","offset[1]"+offset[1]);
//Log.d("scale", String.valueOf(scale));
Glide.with(context).load(getMapURL).dontAnimate().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(photoView);
//Log.d("TAG","setDrawable success!");
//photoView.setImageBitmap(bitmap);
//photoView.setScale(scale);
photoView.setSuppMatrix(matrix);
1 记录偏移和缩放矩阵
2 使用glide网络请求图片
3 还原photoview中图片大小以及偏移量
完整的只需要那四行就足够了,其余的注释掉的只是打出来看看偏移量大致对不对
我这个需求场景很简单,写下来没别的意思,就是希望之后有人通过搜索引擎搜索相关问题的时候能够立马找到答案