0

私は、私のものに似ているが等しくない問題の解決策をたくさん見つけて、たくさんグーグルで検索しました。

サーバー(インターネット)に保存されているjpgファイル(フルスクリーンではなく広告バナーとして)を表示する必要があります。WebView を使ってみたのですが、画面幅が画像幅よりも大きい場合、画像が画面より小さく表示されてしまいます。

WebView の代わりに ImageView を使用することは可能ですか? 「はい」の場合、ダウンロードした画像をさまざまな画面解像度に合わせて拡大縮小するにはどうすればよいですか?

前もって感謝します。

ここで解決策が見つかりますhttps://stackoverflow.com/a/9288544/2252143

MainActivity.java:

public class MainActivity extends Activity {

    ImageView imgProva = null;
    FunzioniUtili Funzioni = new FunzioniUtili();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgProva = (ImageView)findViewById(R.id.imgProva);

        // show The Image
        new DownloadImageTask((ImageView) findViewById(R.id.imgProva)).execute("http://www.softlive.net/advs/banner_adolfo.jpg");
    }

    public void onClick(View v) {
        startActivity(new Intent(this, MainActivity.class));
        finish();

}

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
        int DisplayWidth = 0;
        DisplayWidth  = Funzioni.ScreenWidth (MainActivity.this);

        double CardResizeFactor=1.0;
        //This is the function that I use to resize... / CardResizer is redundant, I know!
        Funzioni.scaleImage(bmImage,(int)(DisplayWidth / CardResizeFactor),0,0);
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

私のサイズ変更機能:

/**
 * public void scaleImage(ImageView view, int boundBoxInDp)
 * 
 * Resize the given ImageView.
 *
 * @param view The ImageView.
 * @param boundBoxInDp   Scaling factor in Dp.
 * @param layoutType 0 = RelativeLayout 1 = LinearLayout 2 = TableLayout 3 = TableRow 4 = FrameLayout.
 * @param colNumber Column number if the selected layout is TableRow. If other, put 0
 */
public void scaleImage(ImageView view, int boundBoxInDp, int layoutType, int colNumber)
{
    // Get the ImageView and its bitmap
    Drawable drawing = view.getDrawable();
    Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap();

    // Get current dimensions
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();

    // Determine how much to scale: the dimension requiring less scaling is
    // closer to the its side. This way the image always stays inside your
    // bounding box AND either x/y axis touches it.
    float xScale = ((float) boundBoxInDp) / width;
    float yScale = ((float) boundBoxInDp) / height;
    float scale = (xScale <= yScale) ? xScale : yScale;

    // Create a matrix for the scaling and add the scaling data
    Matrix matrix = new Matrix();
    matrix.postScale(scale, scale);

    // Create a new bitmap and convert it to a format understood by the ImageView
    Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
    BitmapDrawable result = new BitmapDrawable(scaledBitmap);
    width = scaledBitmap.getWidth();
    height = scaledBitmap.getHeight();

    // Apply the scaled bitmap
    view.setImageDrawable(result);

    // Now change ImageView's dimensions to match the scaled image
    if(layoutType == 0)
    {
        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
        params.width = width;
        params.height = height;

        view.setLayoutParams(params);
    }
    else if(layoutType == 1)
    {
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
        params.width = width;
        params.height = height;
        view.setLayoutParams(params);
    }
    else if(layoutType == 2)
    {
        TableLayout.LayoutParams params = (TableLayout.LayoutParams) view.getLayoutParams();

        params.width = width;
        params.height = height;
        view.setLayoutParams(params);
    }
    else if(layoutType == 3)
    {
        TableRow.LayoutParams params = (TableRow.LayoutParams) view.getLayoutParams();
        params.width = width;
        params.height = height;
        params.column = colNumber;
    }
    else if(layoutType == 4)
    {
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
        params.width = width;
        params.height = height;
        view.setLayoutParams(params);
    }
}

ここで私のActivity_Main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <ImageView
        android:id="@+id/imgProva"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>
4

3 に答える 3

0

わかりました、解決策を見つけました。コードを追加して質問を編集しました。ありがとう。

于 2013-10-27T13:26:43.547 に答える
0

これを使用してpng画像を表示しています。縦横比を維持したまま、画面いっぱいに画像を引き伸ばします。API 11以降でのみ動作するようです。それは RelativeLayout にあります。

<ImageView
    android:id="@+id/main_imageView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:src="@drawable/img_alchemy2" />
于 2013-10-26T21:30:50.897 に答える
0

css で画像の幅を 100% に設定できます

http://www.w3schools.com/cssref/pr_dim_width.aspを参照して ください。

于 2013-10-26T19:40:53.747 に答える