2012-05-26 62 views
0

我想在我的應用程序中設置一個.PNG文件作爲背景Canvas。我做了一個圖像480 * 800,並用此方法:Android - 使用PNG文件在畫布上設置背景

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

我已經開始仿真器(WVGA800),但我的形象看起來比設備的屏幕更大。

如何調整此圖像的大小或使用哪種方法使圖像匹配良好。

其次,有沒有什麼辦法讓背景像這樣通用於不同屏幕分辨率的設備?

預先感謝您。

+0

在將圖像設置到畫布之前,最好先獲取設備大小。並且,將高度和寬度設置爲您的圖片。希望能幫助你。 – Praveenkumar

+0

如果它是靜態圖像,您可以設置您正在繪製的畫布的視圖的背景,然後在繪製方法之前調用super.onDraw()。使用scaleType,您可以讓Android負責爲您調整大小... – Simon

回答

0

X,Y的你在哪裏放的形象呢?如果它在drawable或drawable-mdpi中,它會比你所說的大,因爲WVGA800具有高密度(hdpi)。

即使您將其放在drawable-hdpi文件夾中,它也適用於WVGA800,但它可能無法在其他具有不同分辨率和寬高比的設備上顯示。

您需要處理縮放和保持寬高比(如果您願意)。否則,您將在其他設備上遇到同樣的問題。

2

試試這個...

集位圖

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

調整大小的位圖,按您的寬度和高度位圖的

mFinalbitmap= resizeImage(mFinalbitmap, width ,height); 

設置畫布

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

大小功能:按照保持圖像

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; 
} 
0

最簡單的方法: 聲明在類的靜態位圖:

Bitmap bitmap; 

設置調整大小的位圖,比如你要調整大小位爲100x100:在構造函數中

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

和呼叫方法

相關問題