2

簡単なスライド ショー プログラムを作成しようとしています。さまざまなサイズの写真を表示してから拡大縮小して、幅が画面いっぱいになるようにしたいと思います。画像ビューのサイズを変更できます。デバッガーでは新しい幅に設定されていましたが、ビットマップをスケーリングしません。これを行う方法はありますか?????

コード:

ImageView picImage = (ImageView) findViewById(0);// R.id.viewpic);
try {
    String FileName = "canon20.png";
    AssetManager assetManager = getAssets();
    InputStream inputStream;
    inputStream = assetManager.open(FileName);
    Bitmap icon = BitmapFactory.decodeStream(inputStream);

    int screenWidth = getWindowManager().getDefaultDisplay().getWidth();
    int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
    int bw = icon.getWidth();
    float t = (float) screenWidth / (float) bw;

    picImage.setImageBitmap(icon);
    picImage.getLayoutParams().width = screenWidth;
    picImage.getLayoutParams().height = (int) (icon.getHeight() * t);
} catch (IOException e) {
}
4

1 に答える 1

2

はい、これを行うには非常に簡単な方法があります。

次のコードを使用して、ビットマップを再スケーリングします。

ImageView picImage = (ImageView) findViewById(0);// R.id.viewpic);
try {
String FileName = "canon20.png";
AssetManager assetManager = getAssets();
InputStream inputStream;
inputStream = assetManager.open(FileName);
Bitmap icon = BitmapFactory.decodeStream(inputStream);

int screenWidth = getWindowManager().getDefaultDisplay().getWidth();
int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
int bw = icon.getWidth();
float t = (float) screenWidth / (float) bw;

picImage.setImageBitmap(icon);
picImage.getLayoutParams().width = screenWidth;
picImage.getLayoutParams().height = (int) (icon.getHeight() * t);
// The following line is the one that scales your bitmap.
Bitmap scaledIcon = Bitmap.createScaledBitmap(icon, screenWidth, (int) icon.getHeight() * t, false);
} catch (IOException e) {
}
于 2012-08-28T00:53:30.213 に答える