android背景图片高度,Android ImgaView背景图片不失真处理
需求: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背景图片不失真处理相关推荐
- 微信小程序图片高度固定,width:auto,图片不展示
微信小程序图片高度固定,width:auto,图片不展示 解决办法 image标签设置width:auto 设置mode属性mode=heightFix 高度固定,宽度不固定 小程序版本 2.10.3 ...
- html图片高度撑开,CSS背景图撑开盒子高度
需求: 给定1980px*1080px背景图,在网页显示时,图片宽度等于浏览器宽度,高度根据原图比例显示对应高度,假设图片最小宽度设置为1024px,则最小高度为1024/(1980*1080)=57 ...
- Android设置toolbar高度,Android基础知识之 Toolbar 的使用
Toolbar是Android5.0推出的,用来替代ActionBar的控件.可以高度的自定义,使用灵活.官方的ToolBar是必须在5.0以上的系统才能使用, 如果需要在低版本中使用.需要使用sup ...
- android顶部导航高度,Android特效——————底部/顶部导航条(Fragment+ViewPaper+XTabLayout)...
初次使用xtablayout和viewpaper2.所以就弄了最基础的导航条 一.效果 二.代码 配置环境[在bulid.gradle中添加以下代码] implementation 'androidx ...
- android banner指示器高度,Android 广告轮播 -ConvenientBanner 指示器大小、bottomMargin,leftMarfin的修改。...
在Android开发时,广告轮播我的项目是使用的ConvenientBanner 来实现的,效果也很好.但是有一个很严格的设计师,需要完全按照她的设计来实现,突然发现ConvenientBanner ...
- android 应用区高度,Android创建显示区高度可以调整的ScrollView
导言:我们在用到ScrollView时,有时候需要它的显示区高度可以调整,比如一段话放到ScrollView中,当这段话只有一行时,我们设置ScrollView的高度为20:有两行时,我们设置Scro ...
- android 设置scrollview 高度,Android ScrollView如何设置maxHeight
在我们的开发需求中有时候要控制控件的最大高度,很多控件都没有提供这个属性,今天以ScrollView为例,自定义ScrollView, 实现 maxHeight的更能 java代码部分:package ...
- android+属性动画+高度,android 自定义view+属性动画实现充电进度条
近期项目中需要使用到一种类似手机电池充电进度的动画效果,以前没学属性动画的时候,是用图片+定时器的方式来完成的,最近一直在学习动画这一块,再加上复习一下自定义view的相关知识点,所以打算用属性动画和 ...
- android通知栏自定义高度,Android 自定义通知栏适配
之前做音乐播放器的需求中有要通知栏部分,发现不同手机显示的系统通知栏千奇百怪不统一,需要适配.分析发现目前大部分手机通知栏不是白色就是深色,因此经过考虑定义两种不同的布局,根据不同通知栏背景颜色来创建 ...
最新文章
- html 中写样式,在html文档中如何定义内部样式表
- DBMS_SQL包使用
- 在Eclipse中使用JUnit4进行单元测试(图文教程一)
- 阿里《Java手册》做一个有技术情怀的人
- set_error_handler() 重要用法
- win7移动设备管理器_win7系统usb设备识别不了的解决方案
- ”炮灰“团队自主开发,未参考任何Ftp搜索引擎代码,留个纪念。
- 戴尔计算机没有硬盘驱动,戴尔电脑进PE系统找不到硬盘解决教程
- [从零开始学FPGA编程-4]:快速入门篇 - 操作步骤1 - 常见可编程器件PROM、PLA、PAL、GAL、CPLD、FPGA
- [Office] Excel 每行插入空白行 / 隔行插入一行/ 每列插入空白列 / 每隔两行插入一行 / 批量插入空白行
- 觉醒年代HTML,CSS接下文
- 强大的健身软件——Keep
- 如何利用Excel批量下载网页图片?
- shell的转义字符
- QGC地面站配置PX4Flow光流传感器
- Economics 345 “Applied Econometrics”
- MyCobot六轴机械臂开箱及开发前的准备工作(一)
- Vue项目启动内存溢出 js stack overflow
- 算法--分治法归并排序 python
- SQL -- 游标(详细)