4

オーディオプレーヤーを作成しています。プレーヤーに曲のカバーを表示したいのですが、小さい画像で動作しますが、mp3ファイルの画像が大きい場合はレイアウトビューから外れます。以下のコードを使用して、画像のサイズを300x300に変更しています。

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDensity = 300;
opt.inTargetDensity = 300;

songCoverView.setImageBitmap(BitmapFactory.decodeByteArray(songCover, 0, songCover.length, opt));

しかし、それでも大きく表示され、レイアウトから外れます。

このコードの何が問題になっていますか?

4

3 に答える 3

8

Android にはバグがあることが判明しました。decodeByteArray は何らかの入力オプションを無視します。既知の回避策は、代わりに、次のように、ByteArrayInputStream にラップされた入力配列で decodeStream を使用することです。

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDensity = 300;
opt.inTargetDensity = 300;

songCoverView.setImageBitmap(BitmapFactory.decodeStream(new ByteArrayInputStream(songConver), null, opt));
于 2012-09-19T13:28:50.013 に答える
7

Bitmap.createScaledBitmapを試してください

bitmap = Bitmap.createScaledBitmap(songCover, 300, 300, true);

そして、古い画像と同じ縦横比を維持できます...私は次のロジックを使用します:

        int width  = songCover.getWidth();
        int height = songCover.getHeight();
        float scaleHeight = (float)height/(float)300;
        float scaleWidth  = (float)width /(float)300;
        if (scaleWidth < scaleHeight) scale = scaleHeight;
        else                          scale = scaleWidth;

        bitmap = Bitmap.createScaledBitmap(songCover, (int)(width/scale), (int)(height/scale), true);       
于 2012-06-09T03:25:53.103 に答える
0

Bitmapのプロパティを使用できます

Bitmap bitmap = Bitmap.createScaledBitmap(image, (int)x, (int)y, true);
于 2015-12-23T22:31:18.967 に答える