0

アプリで .PNG ファイルを背景として設定しようとしていますCanvas。480 x 800 の画像を作成し、次の方法を使用しました。

canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), 
                  R.drawable.image_1), 0, 0, null);

エミュレーター (WVGA800) を起動しましたが、画像がデバイスの画面より大きく見えます。

この画像のサイズを変更するにはどうすればよいですか、またはこの画像を適切に一致させるにはどのような方法を使用すればよいですか?

次に、このような背景をさまざまな画面解像度のデバイスで共通にする方法はありますか?

前もって感謝します。

4

3 に答える 3

3

これを試してください...

ビットマップを設定する

Bitmap mFinalbitmap= BitmapFactory.decodeResource(getResources(), R.drawable.image_1);

幅と高さに応じてビットマップのサイズを変更します

mFinalbitmap= resizeImage(mFinalbitmap, width ,height);

ビットマップのキャンバスを設定

canvas.drawBitmap(mFinalbitmap, 0, 0, null);

サイズ変更機能:画像のxとyを維持するように

public Bitmap resizeImage(Bitmap image,int maxWidth, int maxHeight)
{
    Bitmap resizedImage = null;
    try {
        int imageHeight = image.getHeight();


        if (imageHeight > maxHeight)
            imageHeight = maxHeight;
        int imageWidth = (imageHeight * image.getWidth())
                / image.getHeight();

        if (imageWidth > maxWidth) {
            imageWidth = maxWidth;
            imageHeight = (imageWidth * image.getHeight())
                    / image.getWidth();
        }

        if (imageHeight > maxHeight)
            imageHeight = maxHeight;
        if (imageWidth > maxWidth)
            imageWidth = maxWidth;


        resizedImage = Bitmap.createScaledBitmap(image, imageWidth,
                imageHeight, true);
    } catch (OutOfMemoryError e) {

        e.printStackTrace();
    }catch(NullPointerException e)
    {
        e.printStackTrace();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return resizedImage;
}
于 2012-05-26T10:13:36.437 に答える
0

画像はどこに置きましたか?それがdrawableまたはdrawable-mdpiにある場合、WVGA800は高密度(hdpi)であるため、これはあなたが言ったものよりも大きくなります。

drawable-hdpiフォルダーに置いても、WVGA800では機能しますが、解像度やアスペクト比が異なる他のデバイスではうまく表示されない場合があります。

アスペクト比のスケーリングと維持を処理する必要があります(必要な場合)。そうしないと、他のデバイスでも同じ問題が発生します。

于 2012-05-26T10:36:14.087 に答える
0

最も簡単な方法: クラスで static Bitmap を宣言します。

Bitmap bitmap;

サイズ変更されたビットマップをセットアップします。たとえば、サイズ変更されたビットマップを 100x100 にします。

    private void initBitmap(){
            bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.Your_bitmap);
            bitmap = Bitmap.createScaledBitmap(bitmap, 100,100,true);
    }

コンストラクターでメソッドを呼び出す

于 2014-10-19T07:40:51.137 に答える