首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scaleType = centerCrop动态

scaleType = centerCrop动态
EN

Stack Overflow用户
提问于 2013-08-15 23:41:44
回答 3查看 1.9K关注 0票数 1

我的应用程序里有个画廊。我的照片是来自互联网,所以他们是动态添加。我的画廊不会把它们切成一个完美的正方形。我想这样做只是为了使我的画廊看起来更好。我在我的XML中尝试过这个;

代码语言:javascript
复制
 ImageView
        android:id="@+id/phone"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="15dp"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"/>

但是,因为我是动态地添加图像,而不是用xml从src中添加图像,所以这是行不通的。有人知道怎么换个方法吗?当动态添加时,我找不到任何关于如何做它的内容。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-15 23:54:07

如果需要动态缩放图像,可以使用位图的缩放位图方法来指定缩小/向上图像的大小。就像这样:

位图scaledBitmap = Bitmap.createScaledBitmap(unscaledBitmap,wantedWidth,wantedHeight,true);

对于缩放详细信息,您可以按照以下链接操作:

http://developer.sonymobile.com/2011/06/27/how-to-scale-images-for-your-android-application/

票数 1
EN

Stack Overflow用户

发布于 2018-09-06 14:59:32

如果我没弄错的话,我们可以用

代码语言:javascript
复制
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
票数 3
EN

Stack Overflow用户

发布于 2013-08-15 23:57:38

你是把图像放进GridView里吗?如果是这样的话,那么下面的内容就可以了。(如果不是,类似的东西可能会起作用,但我没有测试)。

首先,由于宽度和高度是分开测量的,迫使视图呈正方形是有点棘手的。您可以参考Simple way to do dynamic but square layout获得一些想法。最简单的一个(我认为)是创建一个新的视图继承从ImageView,但覆盖onMeasure()

代码语言:javascript
复制
public class SquareImageView {

    // add usual constructors here

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // this will change the height to match the measured width
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }
}

然后更改布局xml,以创建SquareImageView实例而不是ImageView实例。我认为您的其他属性是可以的,特别是android:scaleType="centerCrop"将确保图像填充整个正方形。

在此之后,您可以将您的图像从任何源下载到Bitmap实例中,然后调用imageView.setImageBitmap(bitmap)将裁剪成完美方格的图像显示出来。就这样!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18263695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档