0

OK、ImageView で画面いっぱいに使用している画像があります。次に示すように、scaletype="centerCrop" を使用してアスペクト比を維持しています。

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/full_bg" />

コードでは、元の画像から拡大縮小された画像への拡大率または倍率を見つけるにはどうすればよいですか? 背景の上に戦略的に配置されたボタンにこの同じ比率を適用できるように、知る必要があります。これは、スケール比を取得しようとしたものです。

ImageView view = (ImageView) findViewById(R.id.imageView1);
Log.i("Test", "x scale = " + Float.toString(view.getScaleX()));

これは、私が探しているものではない 1.0 (スケーリングなし) を返します。また、ImageView の代わりにスケーリングされたビットマップの寸法を取得しようとしました。これにより、元の画像サイズ (540px) も得られます。

ImageView view = (ImageView) findViewById(R.id.imageView1);
Drawable drawing = view.getDrawable();
Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap();
Log.i("Test", "width = " + Integer.toString(bitmap.getWidth()));

私はこれにすべて間違って近づいていますか?これを理解するのに役立つものは何も見つかりません。どんな助けでも大歓迎です!

4

1 に答える 1

0

これを試してみてください:画面のサイズに応じて画像のサイズを変更するためにこれを取得しましたが、これは変更することで簡単に変更できます

    int width = metrics.widthPixels;

することが

    int width = bitmap.getWidth();

または、スケーリングしたいものは何でも。注の幅は、あなたがしようとしているサイズです。

    public static void changeImageSize(ImageView object, Context context){

        DisplayMetrics metrics = new DisplayMetrics();
        ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metrics);
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
        BitmapDrawable bmap = (BitmapDrawable) object.getDrawable();
        RelativeLayout.LayoutParams layout = (LayoutParams) object.getLayoutParams();   
        float bmapWidth = bmap.getBitmap().getWidth();
        float bmapHeight = bmap.getBitmap().getHeight();

        int newBmapWidth = (int) (bmapWidth*width/480);
        int newBmapHeight = (int) (bmapHeight*height/800);
        layout.width = newBmapWidth;
        layout.height = newBmapHeight;
        object.setLayoutParams(layout);
    }
于 2013-07-19T19:54:32.080 に答える