2012-03-30 2 views
0

Je développe une application dans laquelle l'image du papier peint de l'appareil doit changer à des intervalles fixes. J'ai gardé les images dans le dossier drawable. J'utilise un WallpaperManager pour définir ces images comme fond d'écran. Pour garantir le bon fonctionnement de l'application sur différents périphériques, j'ai conservé plusieurs copies d'images de tailles différentes dans divers dossiers, tels que des dossiers drawable-small, drawable-xlarge dans le répertoire res. Cependant, ceux-ci ne sont pas adaptés à tous les appareils.Comment mettre à l'échelle une image de fond d'écran en fonction du type de périphérique

Ma question est comment puis-je m'assurer que les images de fond d'écran s'intègrent bien sur tous les appareils. Devrai-je le faire par programmation? Tout exemple de code serait d'une aide immense. Merci.

C'est le code que je l'ai utilisé

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(); 
    } 

} 

} 

Répondre

0

vous pouvez utiliser

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

choisir l'image selon le rapport de l'écran.

Ou utiliser "scaleType option"

+0

Thanks..I J'essaie d'utiliser le display.getHeight(). Mais d'une manière ou d'une autre, les images continuent à être découpées sur des appareils plus petits. En outre, je ne suis pas sûr de savoir comment utiliser l'option scaleType pour une image de papier peint à travers un fichier image dessinable. Aide aimablement. – ambit

+0

Votre image de papier peint est un ImageView? donc vous pouvez faire quelque chose comme ça: iv.setImageBitmap (bitmap); (ou iv.setImageDrawable) \t \t \t iv.setScaleType (ScaleType.FIT_CENTER); –

+0

Merci encore. J'ai essayé d'utiliser une imageview dans mon code. Mais je ne suis toujours pas sûr de savoir comment associer une imageview avec mon fond d'écran. J'ai édité ma question originale et j'ai mis du code. Veuillez passer par là et m'aider si possible. Désolé, je suis un peu nouveau avec Android et je suis donc un peu confus. – ambit

0

Essayez d'utiliser quelque chose comme DisplayMetrics, et l'échelle/recadrer l'image en fonction de l'écran:

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

metrics.heightPixels; 
metrics.widthPixels; 

utilisation ou getSize():

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