0

ImageView を使用して画像を表示しています。「Image--」ボタンがあります。クリックすると、ImageView はマトリックスを使用して画像をスケーリングします。問題は、最終的に画像が小さすぎて見えなくなることです。

私の例を見ることができます。

元の画像:

ここに画像の説明を入力

「Image--」ボタンを12回クリックした後:

ここに画像の説明を入力

ソファの画像が小さすぎて見えにくいことがわかります。

私の「main.xml」の内容は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/root" xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >

    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
                  android:orientation="horizontal">
        <!-- buttons -->
    </LinearLayout>

    <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:adjustViewBounds="true" android:background="#336699"
               android:scaleType="matrix"/>

</LinearLayout>

そして私のJavaコードは次のとおりです。

    this.btnImageZoomOut.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Matrix matrix = new Matrix(imageView.getImageMatrix());
            matrix.postScale(0.8f, 0.8f);
            imageView.setImageMatrix(matrix);
            imageInfo();
        }
    });

私の質問は次のとおりです。ソファの画像を指定したサイズに縮小するにはどうすればよいですか? たとえば、元のサイズの 1/5?


アップデート

拡大縮小されたソファ画像のサイズを取得できれば、画像が小さすぎるかどうかを簡単に確認できます。しかし、私は多くのことを試みましたが、まだ理解できません。それが、この質問をする理由です。私は何かが恋しいですか?

4

2 に答える 2

0

80% で写真がどのくらいの大きさになるかを確認できませんか? 必要以上に小さい場合は、縮尺を変更しないでください。サイズが小さすぎる場合は、縮小ボタンを無効にしますか?

于 2012-08-30T14:52:38.880 に答える
0

とにかくサイズが必要になるため、Matrix の代わりに Layoutparams (画像のサイズを提供します) を使用する方が簡単だと思います。これは、ズームアウトの onClick メソッドになる可能性があります。

  imageView.setScaleType(ScaleType.FIT_XY);
  LayoutParams layoutParams=imageView.getLayoutParams();
  layoutParams.height*=0.8f;
  layoutParams.width*=0.8f;
  if(layoutParams.height>scaled_specified_size_in_px && layoutParams.width>scaled_specified_size_in_px){
    imageView.setLayoutParams(layoutParams);
  }

そこにスケーリングされた値が必要であることに注意してください。または、元のサイズの % に制限することもできます (元のサイズを保存する必要があります)。

于 2012-08-30T15:03:01.170 に答える