Android ImgaView背景图片不失真处理
2015-07-19 14:13
465 查看
需求:app的欢迎界面采用一个简单的ImageView'显示一张图片的形式,但是图片总是会失真、扭曲。由于本人强迫症严重。所以就考虑了所有的思路后,在参考了网友的建议后,采用动态进行适配。
解决方案:
1.计算出最佳的长宽比;
2.将图片按最佳长宽比进行整体放大、缩小;
3.将处理后的图片添加到ImageView中。
解决方案:
1.计算出最佳的长宽比;
2.将图片按最佳长宽比进行整体放大、缩小;
3.将处理后的图片添加到ImageView中。
package com.horse.util; import android.graphics.Bitmap; import android.graphics.Matrix; import android.widget.ImageView; /** * 该应用程序的公共方法的集合类 * 作者:vaecer on 2015/7/19 12:03 * 邮箱:wuxm1011@163.com. */ public class SysUtil { public void SysUtil() { } public static void setImageBackground(Bitmap bitmap, ImageView imageView, int width, int height) { //计算最佳缩放倍数,以填充宽高为目标 float scaleX = (float) width / bitmap.getWidth(); float scaleY = (float) height / bitmap.getHeight(); float bestScale = scaleX > scaleY ? scaleX : scaleY; //以填充高度的前提下,计算最佳缩放倍数 float subX = (width - bitmap.getWidth() * bestScale) / 2; float subY = (height - bitmap.getHeight() * bestScale) / 2; Matrix imgMatrix = new Matrix(); imageView.setScaleType(ImageView.ScaleType.MATRIX); //缩放最佳大小 imgMatrix.postScale(bestScale, bestScale); //移动到居中位置显示 imgMatrix.postTranslate(subX, subY); //设置矩阵 imageView.setImageMatrix(imgMatrix); imageView.setImageBitmap(bitmap); } }
DisplayMetrics disMetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(disMetrics); int width = disMetrics.widthPixels; int height = disMetrics.heightPixels; ImageView welcomeBackground = (ImageView) findViewById(R.id.welcome_bg); Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.cover);//link the drable image SysUtil.setImageBackground(bitmap,welcomeBackground,width,height);
相关文章推荐
- Android 四大组件学习之Activity四
- 【Android Studio快捷键】之导入相应包声明
- binbinyang---百度地图androidAPI Android SDK v3.5.0-------------1.Hello BaiduMap
- Android ListView 重要属性介绍
- Android控件详解之Button和Checkbox
- Android屏幕适配全攻略(最权威的官方适配指导)
- Android-它们的定义Notification
- Android Day01-布局详解
- Android MaterialDesign相关全
- Android ListView 和 ScrollView 冲突问题
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- Androidstudio安装问题
- Android初学之路(二)
- Android 自动更新 + IIS7 添加APK mime
- 自己总结的Android studio 使用快捷键及注意事项(未完成版)
- android权限设置
- android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用
- java、Android银行卡校验(代码copy过去直接用)
- Android Java层 Looper 机制
- Android Native Looper机制 - 监听文件描述符