android设置图片长宽比例,【教程】安卓保证图片长宽比的同时拉伸图片

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在Android当中我们经常会遇到需要将一个图片拉伸用于填充屏幕的问题,

对于拉伸图片符合屏幕大小,我们通常可以在这个ImageView的配置文件

当中加入android:scaleType="ScaleType.MATRIX"就可以了,但是

这样就会导致图片的大小失真,整个图片被拉伸的特变难看。所以我们

需要一种能够有选择的拉伸我们的图片,导致不致失真。

下面是一种简单的做法,但是不能够保证能解决所有遇到这种问题的场合,

所以,如果读到这篇文章的你发现了更好的解决办法,希望一定要联系我。

好了,下面就是解决的办法:

package com.yourpackage.widgets;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ImageView;

public class AspectRatioImageView extends ImageView

{

public AspectRatioImageView(Context context)

{

super(context);

}

public AspectRatioImageView(Context context, AttributeSet attrs)

{

super(context, attrs);

}

public AspectRatioImageView(Context context, AttributeSet attrs, int defStyle)

{

super(context, attrs, defStyle);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

{

int width = MeasureSpec.getSize(widthMeasureSpec);

int height = width * getDrawable().getIntrinsicHeight() / getDrawable().getIntrinsicWidth();

setMeasuredDimension(width, height);

}

}

复制代码

整个过程很简答,就是在onMeasure()阶段时将图片的Aspect ratio(长宽比)考虑进去,这样

比单纯的机械的使用ScaleType.MATRIX或者ScaleType.FIT_XY要更能针对我们的目标和需求

(当然ScaleType.MATRIX和ScaleType.FIT_XY也有自己的适用场合,而且也比我们的技巧更为

专业,只是不符合我们暂时的需求而已).

然后我们就可以在XML文件当中对使用我们定义好的这个AspectRatioImageView了:

android:src="@drawable/yourdrawable" android:id="@+id/image"

android:layout_alignParentTop="true" android:layout_height="wrap_content"

android:layout_width="match_parent" android:adjustViewBounds="true" />

复制代码

如果遇到任何问题,请与我联系。希望能帮助到你。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值