“ScaleType:FIT_XY”不会拉伸Gallery中的图像。

3

我有一个横向展示的画廊,其中包含很多张图片,使用了一个图像适配器。我希望这些图片能够在水平方向上拉伸到整个屏幕,并保持纵向的宽高比例不变,直至拉伸完成。
我尝试使用FIT_XY属性,但是它并不能完美地适应水平方向,而且也无法在垂直方向上保持宽高比例(图片会被压缩)
请问该如何实现呢?以下是自定义图像适配器:

    public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
int counter = 0;

private final Context mContext;

public String[] mImageIds;

public ImageAdapter(Context c) {
    mContext = c;
    TypedArray a = c.obtainStyledAttributes(R.styleable.Gallery1);
    mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);
    a.recycle();
}

public void insert(String string) {
    mImageIds[counter] = string;
    counter++;
}

@Override
public int getCount() {
    return mImageIds.length;
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView i = new ImageView(mContext);

    i.setImageBitmap(BitmapFactory.decodeFile(mImageIds[position]));
    i.setLayoutParams(new Gallery.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT));
    i.setScaleType(ImageView.ScaleType.MATRIX);
    i.setBackgroundResource(mGalleryItemBackground);

    return i;
}

}

2个回答

3
当我在Android中进行此操作时,我会使用适合缩放(fitCenter,fitStart,fitEnd)以及调整视图边界。XML属性可能如下所示:
android:scaleType="fitCenter" android:adjustViewBounds="true" 

现在图片不会被拉伸了,还有其他的想法吗? - Omar

1

您可以计算宽度和高度的像素并将其发送到setLayoutParams

int width = getWindowManager().getDefaultDisplay().getWidth();
int height = width * bitmapHeight / bitmapWidth;
imageView.setLayoutParams(new Gallery.LayoutParams(width, height));
imageView.setPadding(6, 0, 6, 0); // set this to what you like
// remove this line:
//imageView.setScaleType(ImageView.ScaleType.MATRIX);

设置比例类型不会有任何作用(除了FitXY会水平拉伸到边界,但保留高度为其他值,正如您所提到的)。此外,FILL_PARENT似乎不能按预期工作。其他布局似乎会影响位图大小(或在我的情况下,Drawable)。

在您的布局xml文件中,您可能需要设置fill_parent:

android:layout_width="fill_parent"
android:layout_height="fill_parent"

这对我来说可以下载和流式传输到Drawable中,所以我认为它也适用于你的位图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接