`
Anloney
  • 浏览: 7810 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

安卓开发之ImageView变形的处理

 
阅读更多



当页面布局有ImageView的时候会出现适配比例不当而变形的情况,解决办法是自己复写一个ImageView,代码如下:

public class XImageView extends ImageView
{
	float arg = .0f;

	public XImageView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
	{
		int widthSize = MeasureSpec.getSize(widthMeasureSpec);
		float ft = arg == 0f ? 0.75f : arg;
		setMeasuredDimension(widthSize, (int) (widthSize * ft));

	}

	@Override
	protected void onFinishInflate()
	{
		super.onFinishInflate();
		CharSequence charSequence = getContentDescription();
		if (!TextUtils.isEmpty(charSequence))
		{
			try
			{
				arg = Float.parseFloat(charSequence.toString());
			} catch (Exception e)
			{
			}
		}
	}

	@Override
	public void setImageBitmap(Bitmap bm)
	{
		if (arg == 0f && bm != null)
		{
			arg = 1f * bm.getHeight() / bm.getWidth();
		}
		super.setImageBitmap(bm);
	}

}

 

其中setImageBitmap首先计算出了实际图片的宽高比例,并赋值给arg,然后将arg传给onMeasure,float ft = arg == 0f ? 0.75f : arg;这句话是我的项目中默认图片的宽高比是4:3,如果没有这个要求可以直接float ft = arg,然后在setMeasuredDimension(widthSize, (int) (widthSize * ft));这句话就是根据宽度的大小等比例设置高度的大小,这样图片就是等比例缩放了,不会出现变形的情况了。


 

分享到:
评论

相关推荐

    Android应用开发-ImageView控件.pptx

    在Android应用开发中,ImageView控件是一个至关重要的组件,它被用来显示图像资源,无论是从应用的资源文件中加载还是从网络获取。本讲解将深入探讨ImageView的各种属性、功能以及如何调整图片显示的方式。 首先,...

    android ImageView网络图片加载、动态设置尺寸、圆角(绝对好用)

    在Android开发中,ImageView是用于显示图像的常见组件,它广泛应用于各种场景,如用户头像、应用图标等。在实际应用中,我们不仅需要显示本地资源中的图像,还经常需要从网络上加载图片,同时可能还需要根据界面需求...

    ImageView 宽度设定,高度按比例缩放

    在Android开发中,ImageView是用于显示图像的常见组件。当我们需要在布局中显示图片时,经常需要对ImageView的尺寸进行合理的设置,以便图像能够适应不同的屏幕尺寸和保持正确的比例。本篇文章将深入探讨如何在固定...

    Android-CaptchaImageView自定义ImageView生成验证码图片

    在Android应用开发中,...通过阅读源码,开发者可以学习到自定义View的技巧,包括绘制、事件处理、动画等Android开发的高级技术。同时,该项目也可以作为模板,根据自己的需求进行修改和扩展,以适应不同的应用场景。

    Imageview之图片填充模式fitcenter的实现

    在Android开发中,ImageView是用于显示图像的常见组件。它具有多种显示图像的方式,其中`fitCenter`是一种常用的填充模式。本篇文章将深入探讨`fitCenter`的实现原理,并通过实例来帮助理解如何在ImageView中应用这...

    图像视图ImageView的应用实例

    在Android开发中,ImageView是用于显示图像的常见控件,它是Android UI设计中不可或缺的一部分。本教程将深入探讨ImageView的应用实例,帮助开发者更好地理解和运用这一关键组件。 首先,我们需要了解ImageView的...

    android开发揭秘PDF

    第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...

    Android-RatioImageView-根据比例自动计算宽高的ImageView

    总的来说,`Android-RatioImageView`是一个实用的Android开发工具,它为开发者提供了更灵活的方式来控制图片在不同设备上的显示效果,确保了图片的视觉一致性。通过深入理解和使用这个组件,开发者能够更好地优化...

    Android 自定义ImageView(移动、缩放、旋转)

    在Android开发中,自定义控件是提升用户体验和实现复杂功能的重要手段。本文将深入探讨如何自定义一个名为`MutiTouchImageView`的ImageView,它支持手势操作,包括移动、缩放和旋转图像。这对于创建交互式的应用界面...

    android ImageView控件缩放和旋转图片源码.rar

    在Android开发中,ImageView是用于显示图像的常见控件,它可以用来展示静态图片或动态图。这个压缩包“android ImageView控件缩放和旋转图片源码.rar”显然包含了一个实现ImageView图片缩放和旋转功能的示例代码。...

    图解说明android中ImageView的scaletype属性.pdf

    在Android开发中,ImageView是一个非常常见的控件,用于展示图像资源。`android:scaleType`是ImageView的一个关键属性,它决定了图片如何根据ImageView的尺寸进行缩放和定位。本篇文章将详细解析`android:scaleType`...

    Android ImageView控件缩放和旋转图片源码.zip

    在Android开发中,ImageView是一个非常基础且重要的组件,主要用于显示图像资源,如本地图片或网络图片。本项目“Android ImageView控件缩放和旋转图片源码”提供了关于如何实现图片在ImageView中的动态缩放和旋转...

    Android ImageView ScaleTypeDemo

    在Android开发中,ImageView是用于显示图像的常见组件。它具有强大的功能,其中之一就是通过设置`ScaleType`来控制图片的缩放方式。本篇将深入讲解`ImageView`的`ScaleType`属性及其各种应用场景。 `ScaleType`是`...

    android 绘图 加载大图片 图形变形

    在Android开发中,加载大图片是一项常见的任务,但如果不妥善处理,可能会导致内存溢出(Out Of Memory,OOM)问题,进而影响应用的性能和稳定性。"图形变形"通常是由于图片加载不当或处理方式错误造成的。这篇教程...

    自定义宽高比的ImageView

    在Android开发中,ImageView是用于显示图像的常见组件,但默认情况下,它可能无法很好地处理各种尺寸和比例的图片,导致图像在不同设备上显示不一致或变形。为了解决这个问题,开发者通常会自定义一个ImageView,以...

    自定义圆形ImageView

    在Android开发中,自定义视图是常见的需求之一,尤其在设计美观的用户界面时。本教程将深入探讨如何创建一个自定义的圆形ImageView,它能够处理网络加载的图片,并提供外边框功能,以解决图片锯齿和变形的问题。 ...

    好的-Android2.2 API中文文档——ImageView.doc

    ImageView是Android系统中用于显示图像视图的组件,...总之,ImageView在Android开发中扮演着重要的角色,通过灵活的属性配置,开发者可以实现各种图像展示需求,无论是简单的图片显示,还是复杂的图像处理和动画效果。

    android手势处理图片平移、缩放和旋转

    在Android开发中,手势识别是实现用户交互的关键技术之一,特别是在图像处理方面。"android手势处理图片平移、缩放和旋转"这个主题涉及到的主要知识点包括Android手势检测、ImageView的扩展以及图片操作。 首先,...

    《Android应用开发揭秘》附带光盘代码.

     第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android...

    《Android应用开发揭秘》源码

     第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android...

Global site tag (gtag.js) - Google Analytics