需求:app的欢迎界面采用一个简单的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背景图片高度,Android ImgaView背景图片不失真处理相关推荐

  1. 微信小程序图片高度固定,width:auto,图片不展示

    微信小程序图片高度固定,width:auto,图片不展示 解决办法 image标签设置width:auto 设置mode属性mode=heightFix 高度固定,宽度不固定 小程序版本 2.10.3 ...

  2. html图片高度撑开,CSS背景图撑开盒子高度

    需求: 给定1980px*1080px背景图,在网页显示时,图片宽度等于浏览器宽度,高度根据原图比例显示对应高度,假设图片最小宽度设置为1024px,则最小高度为1024/(1980*1080)=57 ...

  3. Android设置toolbar高度,Android基础知识之 Toolbar 的使用

    Toolbar是Android5.0推出的,用来替代ActionBar的控件.可以高度的自定义,使用灵活.官方的ToolBar是必须在5.0以上的系统才能使用, 如果需要在低版本中使用.需要使用sup ...

  4. android顶部导航高度,Android特效——————底部/顶部导航条(Fragment+ViewPaper+XTabLayout)...

    初次使用xtablayout和viewpaper2.所以就弄了最基础的导航条 一.效果 二.代码 配置环境[在bulid.gradle中添加以下代码] implementation 'androidx ...

  5. android banner指示器高度,Android 广告轮播 -ConvenientBanner 指示器大小、bottomMargin,leftMarfin的修改。...

    在Android开发时,广告轮播我的项目是使用的ConvenientBanner 来实现的,效果也很好.但是有一个很严格的设计师,需要完全按照她的设计来实现,突然发现ConvenientBanner ...

  6. android 应用区高度,Android创建显示区高度可以调整的ScrollView

    导言:我们在用到ScrollView时,有时候需要它的显示区高度可以调整,比如一段话放到ScrollView中,当这段话只有一行时,我们设置ScrollView的高度为20:有两行时,我们设置Scro ...

  7. android 设置scrollview 高度,Android ScrollView如何设置maxHeight

    在我们的开发需求中有时候要控制控件的最大高度,很多控件都没有提供这个属性,今天以ScrollView为例,自定义ScrollView, 实现 maxHeight的更能 java代码部分:package ...

  8. android+属性动画+高度,android 自定义view+属性动画实现充电进度条

    近期项目中需要使用到一种类似手机电池充电进度的动画效果,以前没学属性动画的时候,是用图片+定时器的方式来完成的,最近一直在学习动画这一块,再加上复习一下自定义view的相关知识点,所以打算用属性动画和 ...

  9. android通知栏自定义高度,Android 自定义通知栏适配

    之前做音乐播放器的需求中有要通知栏部分,发现不同手机显示的系统通知栏千奇百怪不统一,需要适配.分析发现目前大部分手机通知栏不是白色就是深色,因此经过考虑定义两种不同的布局,根据不同通知栏背景颜色来创建 ...

最新文章

  1. html 中写样式,在html文档中如何定义内部样式表
  2. DBMS_SQL包使用
  3. 在Eclipse中使用JUnit4进行单元测试(图文教程一)
  4. 阿里《Java手册》做一个有技术情怀的人
  5. set_error_handler() 重要用法
  6. win7移动设备管理器_win7系统usb设备识别不了的解决方案
  7. ”炮灰“团队自主开发,未参考任何Ftp搜索引擎代码,留个纪念。
  8. 戴尔计算机没有硬盘驱动,戴尔电脑进PE系统找不到硬盘解决教程
  9. [从零开始学FPGA编程-4]:快速入门篇 - 操作步骤1 - 常见可编程器件PROM、PLA、PAL、GAL、CPLD、FPGA
  10. [Office] Excel 每行插入空白行 / 隔行插入一行/ 每列插入空白列 / 每隔两行插入一行 / 批量插入空白行
  11. 觉醒年代HTML,CSS接下文
  12. 强大的健身软件——Keep
  13. 如何利用Excel批量下载网页图片?
  14. shell的转义字符
  15. QGC地面站配置PX4Flow光流传感器
  16. Economics 345 “Applied Econometrics”
  17. MyCobot六轴机械臂开箱及开发前的准备工作(一)
  18. Vue项目启动内存溢出 js stack overflow
  19. 算法--分治法归并排序 python
  20. SQL -- 游标(详细)

热门文章

  1. 阀门的开关方向_如何判断阀门的开关方向及正确操作阀门
  2. SAP资产折旧-工作量法
  3. 修改windows系统网卡的MAC地址方法
  4. WebAssembly emscripten工具链的搭建
  5. java给qq发消息_通过java给qq邮箱发送信息
  6. T.D.E FLASH-X (X 反射)全天候战术户外眼镜
  7. 车库咖啡创始人苏菂:对于创业咖啡,我的看法
  8. Vin码识别-车架号识别为APP功能增添亮点
  9. savefiles提供免费25G网盘,可外链图片、视频
  10. 版本控制工具CVS使用经验介绍