Загрузить большое изображение, чтобы соответствовать ImageView - PullRequest
0 голосов
/ 11 июня 2018

Я хочу загрузить изображения размером не менее 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.

Я также пытался использовать Picasso, как показано ниже, я использую программу восстановления изображений:

@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);
}

, но этоне похоже на работу.Можно ли каким-либо образом отобразить полное изображение в указанных размерах изображения без сжатия или потери качества?Спасибо.

Пример изображения, которое я пытаюсь уместить: enter image description here

1 Ответ

0 голосов
/ 11 июня 2018

вам нужно найти соотношение изображения на основе веса устройства 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
);
...