【问题标题】:android load image from url not same load image from fileandroid从url加载图像与从文件加载图像不同
【发布时间】:2016-06-08 01:55:49
【问题描述】:

我关注this link从网址加载图片

这是活动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:id="@+id/imageViewImg3"/>

</LinearLayout>

</RelativeLayout>

如果从文件加载图像,这是 Binderdata

public class trang3Binderdata extends BaseAdapter {
static final String KEY_IMG = "img";
LayoutInflater inflater;
List<HashMap<String,String>> imgHashmap;
ViewHolder holder;
public trang3Binderdata() {
    // TODO Auto-generated constructor stub
}

public trang3Binderdata(Activity act, List<HashMap<String,String>> map) {
    this.imgHashmap = map;
    inflater = (LayoutInflater) act
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    // TODO Auto-generated method stub

    return imgHashmap.size();
}

public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null){
        vi = inflater.inflate(R.layout.list_img, null);
        holder = new ViewHolder();
        holder.ivImgtrang3 =(ImageView)vi.findViewById(R.id.imageViewImg3);
        vi.setTag(holder);
    }
    else{

        holder = (ViewHolder)vi.getTag();
    }

    String uri = "drawable/"+ imgHashmap .get(position).get(KEY_IMG);
    int imageResource = vi.getContext().getApplicationContext().getResources().getIdentifier(uri, null, vi.getContext().getApplicationContext().getPackageName());
    Drawable image = vi.getContext().getResources().getDrawable(imageResource);
    holder.ivImgtrang3.setImageDrawable(image);

    return vi;
}

static class ViewHolder{
    ImageView ivImgtrang3;
}

}

这是结果

这是来自 url 的 Binderdata 加载图片

public class trang3Binderdata extends BaseAdapter {
static final String KEY_IMG = "img";
LayoutInflater inflater;
List<HashMap<String,String>> imgHashmap;
ViewHolder holder;
public trang3Binderdata() {
    // TODO Auto-generated constructor stub
}

public trang3Binderdata(Activity act, List<HashMap<String,String>> map) {
    this.imgHashmap = map;
    inflater = (LayoutInflater) act
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    // TODO Auto-generated method stub
    return imgHashmap.size();
}

public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null){
        vi = inflater.inflate(R.layout.list_img, null);
        holder = new ViewHolder();
        holder.ivImgtrang3 =(ImageView)vi.findViewById(R.id.imageViewImg3);
        vi.setTag(holder);
    }
    else{

        holder = (ViewHolder)vi.getTag();
    }

    int loader = R.drawable.skorea;
    String uri = imgHashmap .get(position).get(KEY_IMG);
    ImageLoader imgLoader = new ImageLoader(vi.getContext().getApplicationContext());
    imgLoader.DisplayImage(uri, loader, holder.ivImgtrang3);

    return vi;
}

static class ViewHolder{
    ImageView ivImgtrang3;
}

}

这是结果

我想从 url 加载图像,就像从文件加载图像一样。但结果大小不一样。为什么会这样?
请帮我。感谢阅读

【问题讨论】:

  • 是的。从文件加载时从 url 加载时的图像大小不同。你能解决它吗?
  • 提供你的xml文件?包括 R.id.imageViewImg3

标签: android


【解决方案1】:

只需更改您的布局 xml 以满足您的需求,我删除 RelativeLayout 因为我认为它没有必要,因为您只有一个图像视图。您可能需要在图像中设置 scaleType 以达到最佳比例视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent" // change width to match parent 
        android:layout_height="wrap_content"  // change height to specific number or let it as its wrap_content
        android:adjustViewBounds="true"
        android:id="@+id/imageViewImg3"/>

</LinearLayout>

【讨论】:

  • 我跟着你,但图像在中心和大小不变。它仍然很小
  • 如果改变 android:layout_height="number dp" 图像的尺寸会变大。但我想要它自动。你有什么想法吗?
  • 尝试将您的 LinearLayout 宽度更改为 match_parent ,并将高度更改为您想要的任何数字,比如说 100dp-150dp 会很好不要忘记添加 scaletype , android:adjustViewBounds="true" android:scaleType="centerCrop"
  • 是否有效?您在 xml 中遇到图像大小问题的任何方式都可以根据需要使用特定数字或通过设置宽度、高度包装内容或匹配父项来调整大小
  • 它不像从文件中加载图像。我尝试任何你给我看的东西。我不知道为什么。可能是我尝试另一个教程从 url 加载图像
猜你喜欢
  • 2016-06-23
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多