2011-11-02 3 views
0

J'ai fait une application qui définit le papier peint en utilisant plusieurs images png sur des intervalles temporisés. La taille du papier peint affichée sur l'écran n'est pas correcte pour tous les appareils. Sur une tablette de 9,7 pouces, la taille est parfaite, ce qui permet de faire défiler la page vers la gauche et la droite, mais seulement sur une petite partie de chaque image, qui ressemble à un zoom.L'image du papier peint ne s'affiche pas dans la bonne taille sur tous les appareils

dois-je dire Android pour afficher les images dans la bonne taille sur tous les appareils?

je présume que la WallpaperManager a fait cela, mais il semble que je ne sais pas comment utiliser encore.

Voici comment Je change le fond d'écran:

myWallpaperManager.setResource(R.drawable.muzdalifah); 

Modifier montrant tout le code utilisé pour changer les fonds d'écran:

public class AlarmReceiverChangeImage extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 

    /* 
    * Make the settings available from the settings xml file. 
    */ 
    SharedPreferences mySettings = PreferenceManager 
      .getDefaultSharedPreferences(context); 

    /* 
    * Allow editing. 
    */ 
    SharedPreferences.Editor editor = mySettings.edit(); 

    /* 
    * Get the settings into variables. 
    */ 
    boolean bln_checkbox_changing_is_activated = mySettings.getBoolean(
      "checkbox_changing_is_activated", false); 

    String myCurrentImageName = mySettings.getString("current_image", 
      "kabanight1"); 

    WallpaperManager myWallpaperManager = WallpaperManager 
      .getInstance(context.getApplicationContext()); 

    if (bln_checkbox_changing_is_activated == true) { 

     if (myCurrentImageName.equals("tentcity")) { 

      try { 

       myWallpaperManager.setResource(R.drawable.kabacloseup); 
       myCurrentImageName = "kabacloseup"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("kabacloseup")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.kabanight1); 
       myCurrentImageName = "kabanight1"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("kabanight1")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.madina1); 
       myCurrentImageName = "madina1"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("madina1")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.madina2); 
       myCurrentImageName = "madina2"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("madina2")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.kabaday1); 
       myCurrentImageName = "kabaday1"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("kabaday1")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.uhud1); 
       myCurrentImageName = "uhud1"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("uhud1")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.bus); 
       myCurrentImageName = "bus"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("bus")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.muzdalifah); 
       myCurrentImageName = "muzdalifah"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else if (myCurrentImageName.equals("muzdalifah")) { 
      try { 

       myWallpaperManager.setResource(R.drawable.tentcity); 
       myCurrentImageName = "tentcity"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } else { 

      try { 
       myWallpaperManager.setResource(R.drawable.madina1); 
       myCurrentImageName = "madina1"; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } // End if myCurrentImageName.equals("kabaday1"). 
    } // End if bln_checkbox_changing_is_activated == true. 

    editor.putString("current_image", myCurrentImageName); // value to store 
    editor.commit(); 
} // End method onReceive. 

Répondre

0

Le rendu de l'image dépend de ce qui suit:

Taille de l'écran

Trames

Résolution

Vous devriez mieux lisez complètement le document ci-dessous pour comprendre comment vous gérez cette situation: Supporting Multiple Screens

+0

J'ai lu le document dans le lien, mais il était assez déroutant, mais je l'ai fait voir les dossiers de quelque chose 9-patch, donc je vais expérimenter ça pour voir si les images obtenir automatiquement la taille correctement. –

+0

J'ai découvert que 9-patch n'est pas supporté comme fond d'écran donc je suppose que j'ai besoin d'une autre façon de le faire. Android est livré avec cette application qui vous permet d'importer dans des images et de créer un fond d'écran. Je souhaite que le nouveau secret qu'ils utilisent pour le faire fonctionner parce que leur application met l'image à l'échelle correcte. –

0

myWallpaperManager this imageView doit être fill_parent. RU donnant une taille fixe pour cela?

+0

Pas de taille fixe, mais je vais modifier la section du code afin que vous puissiez voir tout le code que j'utilise pour changer les fonds d'écran. –

0

ajouter à manifester cette autorisations <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/> <uses-permission android:name="android.permission.SET_WALLPAPER" />

Questions connexes