2012-03-30 78 views
0

我正在開發一個應用程序,其中設備的牆紙圖像應在固定的時間間隔改變壁紙圖像。我已將圖像保存在可繪製文件夾中。我正在使用WallpaperManager將這些圖像設置爲壁紙。如何擴展基於設備類型

爲了保證應用效果很好在各種設備上,我在想在res目錄繪製小,繪製,XLARGE文件夾不同的文件夾保持不同大小圖像的多個副本。但是,這些不能在每個設備上正確縮放。

我的問題是我怎麼保證壁紙圖片很好地適應每個設備上。我需要以編程方式進行嗎?任何示例代碼都會有巨大的幫助。謝謝。

這是我已經使用

Drawable drawable; 
WallpaperManager wpm; 

@Override 
    public void onCreate() { 
     super.onCreate(); 
     wpm=WallpaperManager.getInstance(WallAlarm.this); 
     drawable = getResources().getDrawable(R.drawable.two); 
    } 

    Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap(); 
    ImageView iv=new ImageView(this); 
    iv.setImageDrawable(drawable); 
    iv.setScaleType(ScaleType.FIT_XY); 

    try { 
      wpm.setBitmap(wallpaper); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

} 

} 

回答

0

可以使用

Display display = Activity.getWindowManager().GetDefaultDisplay(); 
display.getHeight(); 
display.getWidth(); 

根據屏幕的比率來選擇圖像的代碼。

或者使用"scaleType option"

+0

Thanks..I我試圖使用display.getHeight()。但不知何故,圖像不斷在較小的設備上裁剪。另外,我不確定如何通過可繪製的圖像文件爲壁紙圖像使用scaleType選項。請幫助。 – ambit 2012-03-30 11:42:35

+0

你的壁紙圖像是一個ImageView?所以你可以做這樣的事情: iv.setImageBitmap(位); (或iv.setImageDrawable)\t \t \t iv.setScaleType(ScaleType.FIT_CENTER); – 2012-03-30 12:22:45

+0

再次感謝。我嘗試在我的代碼中使用imageview。但我仍然不確定如何將imageview與我的壁紙關聯起來。我編輯了我的原始問題並添加了一些代碼。請儘可能通過它並幫助我。對不起,Android有點新,所以有點困惑。 – ambit 2012-03-30 13:45:09

0

嘗試使用類似DisplayMetrics和規模/根據顯示裁剪圖像:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

metrics.heightPixels; 
metrics.widthPixels; 

,或者使用或getSize()

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y;