2017-02-16 3 views
0

ネットワークから画像をダウンロードし、scaleType = "centerInside"オプションを使用してGlideでImageViewに表示しようとしています。Androidでグライドが小さすぎるネットワークからの画像

何らかの理由で、画像がネットワークからダウンロードされたときに、同じ画像がリソースからImageViewに入れられたときよりも、画面上でははるかに小さく見えます。

例:

Portrait view with two different images

両方の画像がhereを見出すことができます。リソースから設定された画像でさえ、私のラップトップに表示されているものと比べて、実際には小さく見えると主張します。再生中の画面の密度に関連するものがあることを理解していますが、これらの画像を「ユーザーフレンドリーなサイズ」、たとえば少し大きくするにはどうすればよいですか?

600x250ピクセルサイズのdifferent imageでも、電話では(画像ビューのlayout_heightとlayout_widthが "wrap_content"に設定されていて)ちょっとです。

Image in landscape mode

活動からのコード:

public class DisplayImagesActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.display_image_activity); 
     setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); 
     setTitle("Hello StackOverflow!"); 

     ImageView top_left = (ImageView) findViewById(R.id.top_left); 
     ImageView top_right = (ImageView) findViewById(R.id.top_right); 
     ImageView bottom_left = (ImageView) findViewById(R.id.bottom_left); 
     ImageView bottom_right = (ImageView) findViewById(R.id.bottom_right); 

     String[] urls = new String[] { 
      "http://imgur.com/6jMOdg0.png", 
      "http://imgur.com/AhIziYr.png" 
     }; 

     top_left.setImageResource(R.drawable.top_left); 
     top_right.setImageResource(R.drawable.top_right); 
     Glide.with(this) 
      .load(urls[0]) 
      .signature(new StringSignature(new Date().toString())) 
      .into(bottom_left); 
     Glide.with(this) 
      .load(urls[1]) 
      .signature(new StringSignature(new Date().toString())) 
      .into(bottom_right); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       this.finish(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
} 

display_image_activity.xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/match_parent" 
    android:orientation="vertical"> 

    <include layout="@layout/_toolbar" /> 

    <ScrollView 
     style="@style/match_parent"> 
     <RelativeLayout 
      style="@style/match_parent" 
      android:padding="16dp"> 

      <TextView 
       style="@style/wrap_content" 
       android:id="@+id/text_resources" 
       android:layout_marginBottom="10dp" 
       android:text="From Resources"/> 

      <ImageView 
       android:id="@+id/top_left" 
       android:background="@color/Linen" 
       android:layout_width="150dp" 
       android:layout_height="120dp" 
       android:layout_marginBottom="20dp" 
       android:layout_below="@id/text_resources" 
       android:scaleType="centerInside"/> 

      <ImageView 
       android:id="@+id/top_right" 
       android:background="@color/Linen" 
       android:layout_width="150dp" 
       android:layout_height="120dp" 
       android:layout_toRightOf="@id/top_left" 
       android:layout_toEndOf="@id/top_left" 
       android:layout_below="@id/text_resources" 
       android:layout_marginLeft="20dp" 
       android:layout_marginStart="20dp" 
       android:scaleType="centerInside"/> 

      <TextView 
       style="@style/wrap_content" 
       android:id="@+id/text_network" 
       android:layout_below="@id/top_left" 
       android:layout_marginBottom="10dp" 
       android:text="From Network"/> 

      <ImageView 
       android:id="@+id/bottom_left" 
       android:background="@color/Linen" 
       android:layout_width="150dp" 
       android:layout_height="120dp" 
       android:layout_below="@id/text_network" 
       android:scaleType="centerInside" /> 

      <ImageView 
       android:id="@+id/bottom_right" 
       android:background="@color/Linen" 
       android:layout_width="150dp" 
       android:layout_height="120dp" 
       android:layout_toRightOf="@id/bottom_left" 
       android:layout_toEndOf="@id/bottom_left" 
       android:layout_below="@id/text_network" 
       android:layout_marginLeft="20dp" 
       android:layout_marginStart="20dp" 
       android:scaleType="centerInside" /> 

     </RelativeLayout> 
    </ScrollView> 
</LinearLayout> 

ありがとうございました。

答えて

0

あなたのイメージは、あなたが定義したものよりも大きくなることができません:彼らはmatch_parent/wrap_contentに柔軟であるべきであるが、必要に応じ

android:layout_width="150dp" 
android:layout_height="120dp" 

は、その固定されたサイズにすることができ

android:layout_width="match_parent" 
android:layout_height="wrap_content" 
+0

はあなたの提案は何も変わりませんが、それはいけません。私が定義したサイズは、ImageViewsをどれくらい大きくしたいのかということです(ImageViewsのための画像の背景が異なります)。しかし、内部の画像は大きくなるはずです。 –

0

あなたImageView秒を試してみてください。

グライドは確かに分かりませんが、ネットワークからの画像の解像度がリソースの解像度よりも小さいようです。 android:scaleType="centerInside"は、イメージの2つのディメンションがImageViewに収まり、縦横比が維持されるまで、イメージがSHRUNKになるという動作を提供します。 ImageViewに合わせて画像を拡大する場合は、代わりにandroid:scaleType="fitCenter"が必要です。 android:adjustViewBoundsは、ディメンションを柔軟にすることを決定した場合の振る舞いに応じて、真/偽にすることもできます。

scaleTypeのドキュメントはここに便利です: https://developer.android.com/reference/android/widget/ImageView.ScaleType.html https://developer.android.com/reference/android/graphics/Matrix.ScaleToFit.html#CENTER

+0

リソースとネットワークからのイメージはまったく同じです。 "fitCenter"を使用したくないのは、小さい画像では実際には機能しない(ImageViewのフルサイズに引き伸ばされる)ためです。私はまだ "centerInside"を使いたいと思っていますが、画像のサイズにかかわらず、ImageViewに配置すると小さすぎて表示されるという問題があります。 2番目の画面(風景)では、600ピクセルの幅の画像を小さく表示する必要があると考えるのは難しいです。 –

+0

QHD画面の電話機では、解像度は2560x1440です。ランドスケープでは、600×250の画像が画面の幅の1/4以下で、画面の高さの1/5未満です。コンテンツをラップすると、ImageViewは画像のサイズに合わせることができます。画面の高解像度を考えれば、イメージは完全に合理的なサイズ(少なくとも私にとって)のようです –

+0

hmm。あなたの説明は正しいと思う。それでも、電話機の解像度が大きくなると、同じ画像が画面上で小さくなり続けます。右に聞こえません。多分、画面の密度に基づいて、与えられた画像のサイズを何とか "乗算"することは可能でしょうか?わかりません、どのように動作するか。 –

0

私は同じ問題に直面しました。グライドは、私のアプリが必要とするものを解釈しようとし、それに応じて画像を変換します。その結果、いくつかの場所で小さすぎる画像が生じます。私はグライド専門家であることに近いものはないですしながら、私の場合はImageView sがadjustViewBounds="true"を使用してMaxWdtと高さが問題

につながる、私は私のために働いクイックフィックスを見つけました。

私は単純に.dontTransform()のmehod呼び出しを追加しました。私の場合は既にプレスケーリングされているサムネイルを使用しているのでOKです。

GlideApp.with(context).load(fireStorage).dontTransform().into(imgView); 

(プレースホルダを使用するには、おそらくも貢献しているだろうが、やはり、私にとってこれは最も簡単な方法でした)

関連する問題