【问题标题】:Load Large Image to Fit ImageView加载大图像以适应 ImageView
【发布时间】:2018-11-20 06:03:36
【问题描述】:

我想将尺寸最小约为 1800 像素宽度和 1400 像素高度的图像加载到如下布局中的图像视图中:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <CheckBox
        android:id="@+id/customiseCheckBox"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:button="@drawable/custom_checkbox_bkg"
        android:layout_centerVertical="true" />

    <ImageView
        android:id="@+id/customizeSelImg"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:layout_marginRight="5dp"
        android:layout_toRightOf="@id/customiseCheckBox"
        android:contentDescription="@string/app_name"
        android:scaleType="fitCenter"
        tools:src="@drawable/artcard" />

</RelativeLayout>

我尝试了不同的比例类型,但加载的图像没有覆盖我为图像视图指定的尺寸,并且加载了rather too small

我也尝试过像下面这样使用毕加索,我正在使用图片回收:

@Override
public void onBindViewHolder(final CustomizeViewHolder viewholder, int position) {
    final Customize customize = itemsList.get(position);
    viewholder.customiseCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (b){
                customize.setChecked(b);
            }
        }
    });

    Picasso.with(context)
            .load(customize.getIcon())
            .fit()
            .centerCrop()
            .into(viewholder.customizeSelImg);
}

但这似乎不起作用。有什么方法可以将完整图像显示到图像视图的指定尺寸中而不会压缩或质量损失?谢谢。

我想要拟合的示例图片:

【问题讨论】:

  • 加载这么大的图像会降低性能,我建议你将相同的图像缩小为 recyclerview 项目的缩略图,然后当你点击它们时,只需启动质量更好的图像
  • 请多解释。我尝试增加图像视图尺寸,但图像大小仍然相同。我想增加图像以适应 imageview 维度中的值
  • 大小和尺寸是两个不同的东西,你不会仅仅把它放在一个图像视图中就减小图像大小,你需要压缩它或缩小图像分辨率
  • 你能把你的输出图片和你想要适应的图片一起发布吗?
  • 我已经添加了示例图像。如果我在线压缩它会适合图像视图吗?

标签: android android-imageview picasso


【解决方案1】:

您需要根据设备重量 X 高度找到图像比例,然后您可以动态设置图像高度权重。

public void setHeightWidthFromDeviceScreen() {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels;

        //set banner height using ratio
        int bannerHeight = (int) (width / 1.8014705882);

       //set height to image
        imgSlider.getLayoutParams().height = bannerHeight;


    }

1.8014705882这是我基于metrics.heightPixels、metrics.widthPixels的图像比例,你可以根据你的要求改变它

求图片的比例

DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float ratio = ((float)metrics.heightPixels / (float)metrics.widthPixels
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多