boycy815 / pinchimageview Goto Github PK
View Code? Open in Web Editor NEW体验非常好的Android图片手势控件。
License: MIT License
体验非常好的Android图片手势控件。
License: MIT License
设置android:scaleType="fitXY",仍然没有宽度全屏
// 对方法进行扩展~(直接改的源码)
public boolean onSingleTapConfirmed(MotionEvent e) {
//触发点击
if (mOnClickListener != null) {
mOnClickListener.onClick(PinchImageView.this);
}
if (null != imageOnClickListener){
// 获取触摸点的坐标 x, y
float x = e.getX();
float y = e.getY();
// 目标点的坐标
float dst[] = new float[2];
// 获取到ImageView的matrix
Matrix imageMatrix = getImageMatrix();
// 创建一个逆矩阵
Matrix inverseMatrix = new Matrix();
// 求逆,逆矩阵被赋值
imageMatrix.invert(inverseMatrix);
// 通过逆矩阵映射得到目标点 dst 的值
inverseMatrix.mapPoints(dst, new float[]{x, y});
float dstX = dst[0];
float dstY = dst[1];
// 获取图片的大小
float drawWidth = getDrawable().getBounds().width();
float drawHeight = getDrawable().getBounds().height();
float deviceX = dstX/drawWidth;
float deviceY = dstY/drawHeight;
// 判断dstX, dstY在Bitmap上的位置即可
if (!(deviceX<0 || deviceX>1 || deviceY<0 || deviceY>1)){
imageOnClickListener.onClick(deviceX,deviceY);
}
}
return true;
}
在图片上,双指不停的捏合图片越来越大
跟viewpager联用有冲突...使用你demo里面自己写的viewpager也是一样...
加载一个长图是可以让图片宽度适配整个屏幕,目前是中间一个长条。
thanks
如何兼容侧滑返回呢?
没有双击放大前可以侧滑返回
双击放大后,滑动到边缘后才能侧滑返回
组件使用的是BGASwipeBackLayout
3MB的图片双指操作已经卡到不能接受
配合ViewPager划动久了会出现内存不足
This custom view should extend android.support.v7.widget.AppCompatImageView instead
求助图片大小不同,双击图片高度同控件高度的算法
大图很多都是全屏参看的,全屏加载需要知道Loading,error,success状态. 当把该控件findviewbyid转化为Imageview后, 通过Glide加载,使用监听器RequestListener,发现拿不到任何回调,原因未知, findviewbyid为此自定义控件也不行, 用普通的Imageview就可以拿到回调. Glide版本3.7.0.
使用PagerSnapHelper的recyclerView可以替代viewpager,但是控件在recyclerView中缩放事件无法触发
例如:
进入activity显示图片,并addOuterMatrixChangedListener
最后显示的结果是 RectF(0.0, 633.6239, 1440.0, 1709.3761)
这里双击放大,再双击缩小
得到
RectF(1.2207031E-4, 633.62415, 1440.0001, 1709.3763)
图片的状态,图片放大状态,是否已经到顶,还是初始状态,以便于判断是否可以下拉刷新。
怎么依赖啊
po主会玩
配合Glide使用加载小图的时候 会拉伸图片尺寸,请问怎么修改
求助:怎么获得图片缩放后的宽度 还有平移后左边未显示部分的宽度 谢谢
集成到APP中非常完美,感谢boycy815,感谢github~~~
在Demo应用中我将图片加载方式由ImageLoader 改 为Picasso方式出现闪烁问题。
//Global.getImageLoader(getApplicationContext()).displayImage(image.getUrl(100, 100), piv, thumbOptions);
Picasso.with(PagerActivity.this).load(image.getUrl(100,100)).into(piv);
//Global.getImageLoader(getApplicationContext()).displayImage(image.getUrl(image.getOriginWidth(), image.getOriginHeight()), piv, originOptions);
Picasso.with(PagerActivity.this).load(image.getUrl(image.getOriginWidth(), image.getOriginHeight())).into(piv);
如题,运行demo后,发现在ViewPager中双击放大图片后再次双击,图片偏移。随后再次双击才恢复原图大小
╮(╯_╰)╭
为什么不放到jcenter去呢
matrix.postRotate(90, mImageView.getWidth()/2, mImageView.getHeight()/2);
mImageView.outerMatrixTo(matrix, 200);
当outerMatrixTo接口传递一个旋转的matrix时,放大后,图片消失在视图中。
有没有什么办法解决?
果断差评啊~~!!
作者您好
本人在使用您的控件的过程中需要获取到缩放后imageview显示部分的图片,我看了您的代码,似乎没有找到api , 不知道该如何获取。
希望能得到您的回复与解答
谢谢!
Hi, 我是一个android程序员,github上发现了你做的PincnImageView这个神奇的库。
我在使用这个库的过程中,有一点疑问:
图片放大缩小的动画过程中,除了对matrix的放大缩小之外,为什么还要同步进行一个mask的放大缩小动画?
我尝试注视掉相关的代码,也能正常运行,出现预期的效果
能不能简单的给我解释一下,mask存在的意义....
谢谢啦
从可维护性的角度,更合适的做法是继承 ViewPager,重写部分方法。为什么要整个重写 ViewPager?希望能改进一下。
你好,这个控件很好用,我十分喜欢,但是不能展示长图,我想问问,能不能优化一下,让长图也能展示,谢谢
大神问一下,如何单击返回呢
放大图片后左右移动图片不流畅,很卡,上下移动正常。
请问跟viewpager 结合的时候需要注意什么? 谢谢
我想要在缩放后 把缩放后的图 用creatBitmap 撷取下来 请问这些数值怎么拿到呢
长图显示模糊问题
图片地址: http://wimg.spriteapp.cn/x/640x400/ugc/2016/09/21/57e1bf635a4e2.jpg
这个图片的尺寸是 640*17195.
加载相对小一些的图片是非常完美的,但是上面提到的这张图片就是加载不进去 也不报错,我试了一下在photoView中是可以显示出来的,imageView中也是可以的.希望有时间可以看看这个问题.(不止上面提到的这一张图片有问题,还有其他的比如 http://wimg.spriteapp.cn/x/640x400/ugc/2016/09/23/57e45fc869587.jpg)
最近我也在看你的这个控件.非常的赞
我想实现:双指缩小图片,手指离开屏幕后图片保持缩小状态,禁止图片自动回弹,请问需要修改源码中的哪个部分,谢谢!
在GridView中使用发现PinchImageView一直在渲染绘制
只在显示数据的情况下有一直渲染绘制,点击后就没有一直渲染绘制,回来又有一直渲染绘制。
@OverRide
protected void onDraw(Canvas canvas) {
//在绘制前设置变换矩阵
if (isReady()) {// debug这一直返回true
……
setImageMatrix(getCurrentImageMatrix(matrix));
……
}
……
}
onDraw()->isReady()->setImageMatrix()->invalidate()->onDraw()->isReady()…进入死循环…onDraw()->isReady()->setImageMatrix()->invalidate()
手机打开Profile GUP rendering 选 On screen as bars 显示一直在渲染绘制
当前图片放大的时候应禁止划动到下一页
设置长图时如何设置宽匹配屏幕,显示图片最顶上部分
直接导项目不是很方便 希望能传到jitpack或者其他maven repo上去
如题
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.