Android 使用适配器正确缩放Gallery小部件的图像

Android 使用适配器正确缩放Gallery小部件的图像,android,android-gallery,Android,Android Gallery,我正在使用Gallery小部件适配器类延迟加载图像。我从web服务获得的图像是640x431。我希望图像以宽度填充屏幕,同时无论高度如何,都保持相同的纵横比 我不知道如何处理这种缩放 下面是我的多媒体资料适配器: public class GalleryImageAdapter extends BaseAdapter{ private Activity activity; private ArrayList<String> listOfImages; pub

我正在使用Gallery小部件适配器类延迟加载图像。我从web服务获得的图像是640x431。我希望图像以宽度填充屏幕,同时无论高度如何,都保持相同的纵横比

我不知道如何处理这种缩放

下面是我的多媒体资料适配器:

public class GalleryImageAdapter extends BaseAdapter{

    private Activity activity;
    private ArrayList<String> listOfImages;
    public ImageLoader imageLoader; 


    public GalleryImageAdapter(Activity a, ArrayList<String> listOfImages){
        activity = a;
        this.listOfImages = listOfImages;
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    @Override
    public int getCount() {
        return listOfImages.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        View v = convertView;


        if (v == null) {
            LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.gallery_layout, null);

        }


        final String url = listOfImages.get(position);


         ImageView galleryImage = (ImageView) v.findViewById(R.id.galleryImage);
         imageLoader.DisplayImage(url, activity, galleryImage);
        return v;
    }

}
公共类GalleryImageAdapter扩展了BaseAdapter{
私人活动;
私有ArrayList图像列表;
公共图像加载器;
公共GalleryImage适配器(活动a,ArrayList图像列表){
活动=a;
this.listOfImages=listOfImages;
imageLoader=新的imageLoader(activity.getApplicationContext());
}
@凌驾
public int getCount(){
返回listOfImages.size();
}
@凌驾
公共对象getItem(int位置){
返回图像列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组视图组){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.画廊布局,空);
}
最终字符串url=listOfImages.get(位置);
ImageView galleryImage=(ImageView)v.findViewById(R.id.galleryImage);
DisplayImage(url、活动、galleryImage);
返回v;
}
}
gallery_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/galleryImage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"/>

</LinearLayout>


您可以将高度和宽度设置为
填充父对象,然后使用。可能使用
CENTER\u INSIDE

您可以将高度和宽度设置为
fill\u parent
,然后使用。如果我理解正确,可以在内部使用
CENTER\u

,您希望当前图像在显示时占据小部件的整个宽度(在水平滚动之前,下一个和上一个图像不可见),对吗

您需要从适配器的
getView()
方法中设置返回视图的LayoutParams,如下所示:

@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {

    // current code here ..

    v.setLayoutParams(new Gallery.LayoutParams(LayoutParams.MATCH_PARENT,
         LayoutParams.MATCH_PARENT));
    return v;
}

对于
ImageView
上的
ScaleType
,如果希望整个图像适合空间,请使用
centerInside
,如果可以裁剪,请使用
centerCrop

如果我理解正确,则希望当前图像在显示时占据小部件的整个宽度(在水平滚动之前,下一个和上一个图像不可见),对吗

您需要从适配器的
getView()
方法中设置返回视图的LayoutParams,如下所示:

@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {

    // current code here ..

    v.setLayoutParams(new Gallery.LayoutParams(LayoutParams.MATCH_PARENT,
         LayoutParams.MATCH_PARENT));
    return v;
}

至于
ImageView
上的
ScaleType
,如果希望整个图像适合空间,请使用
centerInside
,如果可以裁剪,请使用
centerCrop

这没有任何作用。我必须指出,图像的默认状态是拇指小且居中,而不是填充整个图像的宽度屏幕。拇指似乎也与下一个重叠。你能发布
gallery_layout
的内容吗?这没有任何作用。我必须指出,图像的默认状态是拇指小且居中,不填充屏幕的宽度。拇指似乎与下一个重叠。你能发布吗他看到了画廊版面的内容,谢谢。所有的图片看起来都很模糊,即使它们是高分辨率的。谢谢。所有的图片看起来都很模糊,即使它们是高分辨率的。只是搜索了相关的指南,它帮了我,投票了…只是搜索了相关的指南,它帮了我,投票了。。。