2011-10-16 93 views
1

你能告訴我使用代碼基於設備在縱向或橫向模式下調整主屏幕壁紙的最佳方式嗎?使用代碼調整壁紙大小?

我們希望確保它可以在許多設備上工作。

請提供代碼示例。

我們目前正在使用這個設置壁紙:

myWallpaperManager.setResource(R.drawable.thewallpaper); 

牆紙也是一個png文件。

更新:

基於從coder_for_life22的代碼,我把它改成這樣:

 try { 
      myWallpaperManager.setResource(R.drawable.kabaday1); 

      myCurrentImageName = "kabaday1"; 

      Bitmap myBitmap = BitmapFactory.decodeResource(context.getResources(), 
        R.drawable.kabaday1); 

      Bitmap bitmapResized = Bitmap.createScaledBitmap(myBitmap, 600, 300, 
        false); 

      myWallpaperManager.setBitmap(bitmapResized); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

它縮放圖像,但Android是重新顯示並用相同的圖像尺寸爲擴大圖像它在縮小之前就已經完成了,只是這次圖像質量處於模糊的一面,並且仍然看起來放大了,而不是顯示應該縮小的整個圖像。

奇怪的行爲。也許我需要添加更多的代碼,以便它真正縮小並保持清晰。至少我認爲它應該這樣做,因爲圖像應該更小。

有許多應用程序在做同樣的事情。我只希望我知道他們是如何做到的。

謝謝。

回答

1

您將需要使用此

Bitmap bitmapResized = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter); 

myWallpaperManager.setBitmapResource(bitmapResized); 

編輯調整圖像大小:您可能還需要更改所使用的ImageView的scaleType。通過插入到你的xml中imageview所在的地方。

android:scaleType = "FIT_CENTER" 

或者你可以通過在上面的代碼中插入此代碼來以編程方式執行它。

myWallpaperManager.setScaleType(ImageView.FIT_CENTER); 

這應該擺脫你得到的放大看。

+0

您好coder_For_Life22,我根據您的示例代碼對其進行了更改,它可以縮小比例,但我發現Android在同一時間重新調整大小,並保持放大狀態,而不是在屏幕上顯示整個圖像。請參閱我的文章的「更新」部分中的更改。 –

+0

查看我的編輯 –

+0

您好coder_ForLife22,這個應用程序不使用ImageView的壁紙,因爲它是一個幻燈片顯示類型的應用程序,每分鐘更改壁紙。另外,當我在myWallpaperManager之後鍵入完整句號時,intellisense沒有顯示setScaleType作爲選擇,因爲我想查看是否需要一行,如myWallpaperManager.setScaleType(bitmapResized)。還有另一種方法可以做到嗎? –

相關問題