2012-03-30 117 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;