-1

以下の2つの機能を使用して、インターネットからダウンロードして画像を作成します。ダウンロード画像を画像ビューで表示すると、そのサイズ(幅と高さ)は実際のサイズとは異なります。なぜですか?画像を描画可能なフォルダーに保存して画像ビューに表示すると、そのサイズとして問題なく表示されます。

Java コード:

public InputStream OpenHttpConnection(String urlString) throws IOException{
    InputStream in = null;
    int respobse = -1;

    URL url = new URL(urlString);
    URLConnection conn = url.openConnection();
    if(!(conn instanceof HttpURLConnection))
        throw new IOException("It's not HTTP connection");
    try{
        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestMethod("GET");
        httpConn.connect();

        respobse = httpConn.getResponseCode();

        enableHttpResponseCache();

        if(respobse == HttpURLConnection.HTTP_OK){
            in= httpConn.getInputStream();
            Log.d("HTTP connection","OK");
        }
    }catch (IOException e) {
        Log.e("HTTP ERROR",e.toString());
        throw new IOException();
    }
    return in;
}

public Bitmap DownloadImage(String URL){

    Bitmap bitmap = null;
    InputStream in = null;

    try{
        in = OpenHttpConnection(URL);
        bitmap = BitmapFactory.decodeStream(in);
        in.close();
    }catch(IOException ex){

    }
    return bitmap;
}

イメージビューを含むレイアウトは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/include21"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:background="@drawable/round" >



    <ImageView
        android:id="@+id/imgRecibeImage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/round"
        android:scaleType="fitStart"
        android:src="@drawable/img1" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right" >

        <TextView
            android:id="@+id/txtRecibeName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#80000000"
            android:gravity="right"
            android:padding="8dp"
            android:text="Crispy Chicken and Sandwich"
            android:textColor="#ffffff"
            android:textSize="17sp" />


        <TextView
            android:id="@+id/tvLoader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/txtRecibeName"
            android:layout_alignBottom="@+id/txtRecibeName"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="40dp"
            android:text="Small Text"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </RelativeLayout>

</FrameLayout>
4

1 に答える 1

0

ビットマップが密度に適合することを確認しましたか? つまり、100x100px の画像を使用すると、高密度デバイスでは小さくなり、低密度デバイスでは大きくなります...

また、imageView のサイズをその寸法の 1 つで fill-parent に設定し、fit-start を使用していることに気付きましたか?

これにより、設定したルールの下で、画像が可能な限り引き伸ばされます。両方のディメンションに wrap-content を設定すると、より予測しやすくなります。

于 2012-09-08T21:55:09.237 に答える