图片的缩放,平移——Matrix的使用
来源:互联网 发布:mac bootcamp 编辑:程序博客网 时间:2024/06/01 09:14
Matrix,中文叫矩阵,主要用于平面的缩放、平移、旋转等操作
在android中,Matrix由9个float值构成,是一个3*3的矩阵,
cosX,-sinX,translateX
sinX, cosX,translateY
0, 0, scale。
在本项目中,实现主要实现了当前居中缩放的功能。
pre :M’ = M * T(dx, dy) ,右乘,先执行
post:M’ = S(sx, sy) * M,左乘,后执行
先通过preTranslate(0,0),将图片移动到原点,
再postScale放大或缩小,
最后通过postTranslate,设置放大,缩小后的偏移值。
为什么先移回原点,纯粹是为了好计算而已。
/** * 按比例缩放 * @param scale 缩放比例 */ private void zoom(float scale) { if(null == matrix){ matrix = new Matrix(); } matrix.getValues(values);//获取缩放前的偏移值 matrix.reset(); matrix.postScale(scale, scale);//post左乘,后执行 matrix.preTranslate(0,0);//pre右乘,先执行 float left = values[2]; float top = values[5]; switch (screen_type) { case Configuration.ORIENTATION_PORTRAIT://竖直屏幕 if(scale * bheight <= getHeight()){ if(left + scale * bwidth < getWidth()){ float dx = getWidth() - (left + scale * bwidth); left += dx; } matrix.postTranslate(left,(getHeight() - scale*bheight)/2f); }else{ fullScreenScale(scale, left, top); } break; case Configuration.ORIENTATION_LANDSCAPE://水平屏幕 Log.i("AAAA","translateX:"+ left+","+ top +"..."+(getWidth() - scale*bwidth)/2f); if(scale * bwidth <= getWidth()){ if(top + scale * bheight < getHeight()){ float dy = getHeight() - (top + scale * bheight); top += dy; } matrix.postTranslate((getWidth() - scale*bwidth)/2f,top); }else { fullScreenScale(scale, left, top); } break; } isScale = true; invalidate(); }/** * 宽高铺满全屏的缩放 * @param scale 缩放比 * @param left 左边偏移值 * @param top 顶部偏移值 */ public void fullScreenScale(float scale, float left, float top) { if(top + scale * bheight < getHeight() ){ float dy = getHeight() - (top + scale * bheight); top += dy; } if(left + scale * bwidth < getWidth()){ float dx = getWidth() - (left + scale * bwidth); left += dx; } matrix.postTranslate(left,top); }
0 0
- 图片的缩放,平移——Matrix的使用
- 缩放图片:Matrix与Bitmap的使用
- Android中用Matrix实现ImageView里的图片平移和缩放动画
- Android 图片的平移、缩放、旋转demo
- 简单的学习Matrix的缩放,平移,旋转,倾斜
- Android matrix偏移(平移),旋转,缩放,倾斜的原理
- Matrix控制平移、旋转和缩放的方法
- 对图片进行缩放处理——Matrix对象的使用
- 图像的平移,缩放..
- Martix精确缩放图片:Matrix与Bitmap的使用
- android使用matrix控制图片的旋转,缩放
- 使用Matrix 显示旋转和缩放后的图片
- 讲述属性动画的使用 —使用动画旋转、平移、渐变和缩放
- Android Matrix处理ImageView中图片缩放,平移
- Android中利用Matrix实现图片平移、缩放和旋转
- Android 利用Matrix实现图片随手指平移、旋转、缩放
- Android 利用Matrix实现图片随手指平移、旋转、缩放
- Android 利用Matrix实现图片随手指平移、旋转、缩放
- Linux下Tomcat的安装配置
- 【完全背包】HDU1248寒冰王座
- 6.5 error模块
- Viewstub的使用
- 6.6 移信和 fairness策略
- 图片的缩放,平移——Matrix的使用
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 对Servlet容器的补充
- PHP config.php【完整代码】
- 首字母排序A-Z,用mysql函数来操作
- hdu3047 Zjnu Stadium--带权并查集
- Grid得到选择行数据的方法总结
- 产生随机数的好方法random_shuffle()
- 深入理解java虚拟机--垃圾收集器与内存分配策略