Android 使用适配器正确缩放Gallery小部件的图像
我正在使用Gallery小部件适配器类延迟加载图像。我从web服务获得的图像是640x431。我希望图像以宽度填充屏幕,同时无论高度如何,都保持相同的纵横比 我不知道如何处理这种缩放 下面是我的多媒体资料适配器:Android 使用适配器正确缩放Gallery小部件的图像,android,android-gallery,Android,Android Gallery,我正在使用Gallery小部件适配器类延迟加载图像。我从web服务获得的图像是640x431。我希望图像以宽度填充屏幕,同时无论高度如何,都保持相同的纵横比 我不知道如何处理这种缩放 下面是我的多媒体资料适配器: public class GalleryImageAdapter extends BaseAdapter{ private Activity activity; private ArrayList<String> listOfImages; pub
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
的内容吗?这没有任何作用。我必须指出,图像的默认状态是拇指小且居中,不填充屏幕的宽度。拇指似乎与下一个重叠。你能发布吗他看到了画廊版面的内容,谢谢。所有的图片看起来都很模糊,即使它们是高分辨率的。谢谢。所有的图片看起来都很模糊,即使它们是高分辨率的。只是搜索了相关的指南,它帮了我,投票了…只是搜索了相关的指南,它帮了我,投票了。。。