无法在Android应用程序中维护图像宽高比/质量

时间:2018-03-01 14:50:49

标签: android

正如标题所示,我在Android应用程序上维护图像的质量和宽高比存在很多问题。

基本上我有一个图像视图,我正在尝试使图像适合图像视图并保持图像质量。我不能使用fitxy,因为它会拉伸图像以填充整个图像视图,但我只希望图像自动缩放它的自我并尽可能像手机图库一样显示清晰。

在我的代码中,我使用fitCenter作为缩放类型,图像的大小似乎没问题,但是图像变形很糟糕。这是代码。

我还包括了android和iphone版本的快照,以显示完全相同的图像在同一图像上的显示方式。

<?xml version="1.0" encoding="utf-8"?>
    <!-- This controls layout for the slider in Gallery -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent"
    >
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/pagerimage"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:adjustViewBounds="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_gravity="center_horizontal"
        />
</RelativeLayout>
</LinearLayout>

iPhone

Android

public void handleGalleryImages() {

    try {
        for (int j = 0; j < imagesNaturalItemlist.size(); j++) {

            Log.e("ImagePATH>>>>>", imagesNaturalItemlist.get(j).getImage());
            String imageid = imagesNaturalItemlist.get(j).getUniqueId();
            downgalleryimage = new DownloadImage(imagesNaturalItemlist.get(j).getImage(), imageid);
            downgallerylist.add(downgalleryimage);
            beachimages.add(imagesNaturalItemlist.get(j).getImage());
        }

    } catch (NullPointerException e) {
        e.printStackTrace();
    }

适配器

public Object instantiateItem(ViewGroup container, int position) {
    View itemView = LayoutInflater.from(context).inflate(R.layout.sliding_pager_row, container, false);
    ImageView imageView = (ImageView) itemView.findViewById(R.id.pagerimage);

    if (images.get(position) != null && !images.get(position).equals("")) {
        //Picasso.with(context).load(images.get(position)).into(imageView);

        Glide.with(context)
                .load(images.get(position))
                .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).override(600, 250))
                .into(imageView);
    }

    container.addView(itemView);
    return itemView;
}

0 个答案:

没有答案