Drawableのリサイズ方法

BitmapクラスならsetDensityメソッドやcreateScaledBitmapメソッドを使えば簡単に画像をリサイズできます。

そうではなくDrawableクラスを使って画像をリサイズするときは少し工夫がいります。

例えば200x200の大きさの画像でDrawableを作り、それを100x100の大きさにリサイズしたい場合は次のコードを書きます。

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Drawable drawable = Drawable.createFromPath("/data/data/com.MyApp.myapp/images/character1.png");
            //画像のあるパスからdrawableを生成
        Bitmap orgBitmap = ((BitmapDrawable)drawable).getBitmap();
            //DrawableからBitmapインスタンスを取得
        Bitmap resizedBitmap = Bitmap.createScaledBitmap(orgBitmap, 100, 100, false);
            //100x100の大きさにリサイズ
        drawable = new BitmapDrawable(getResources(), resizedBitmap);

        final ImageView imageView = (ImageView)findViewById(R.id.imageView);
        imageView.setImageDrawable(drawable);
    }
}

このようにいったんBitmapに変換してそれを目的の大きさにリサイズしてからDrawableに再変換すれば自由に大きさを変更できます。

関連項目
プライバシーポリシー