2011-09-12 16 views
11

मैं कुछ छवियों के एक साधारण वॉलपेपर ऐप पर काम कर रहा हूं। वे खींचने योग्य फ़ोल्डर्स में .png फ़ाइलें हैं।एंड्रॉइड वॉलपेपर प्रबंधक फसल छवि

WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 
.... 
myWallpaperManager.setResource(R.drawable.image1); 

कोई फर्क नहीं पड़ता आकार या संकल्प मैं उपयोग करने के लिए लगता है, जब वॉलपेपर सेट कर दिया जाता है कि यह मूल छवि फसलों:

यहाँ कुछ कोड के टुकड़े कर रहे हैं। जब मैं पृष्ठभूमि के समान छवि का उपयोग करता हूं तो यह सही आकार होता है और पूरी छवि दिखाता है। मैंने सोचा कि यह मेरे एमुलेटर के साथ एक समस्या हो सकती है इसलिए मैंने इसे एक वास्तविक डिवाइस (एचटीसी एरिस) पर चलाने की कोशिश की है और मुझे एक ही समस्या है। मैंने छवि को एरिस के लिए स्क्रीन आकार और संकल्प बनाया है और यह अभी भी इसे फसल कर रहा है। मैंने फिर छवि को केवल एक इंच ऊंचा और 100 डीपीआई का संकल्प बनाया। यह eris पर बहुत pixelated था, लेकिन अभी भी छवि फसल।

किसी भी मदद की सराहना की जाएगी।

मैंने पहले और बाद में दिखाने के लिए कुछ छवियां जोड़ने का प्रयास किया, लेकिन एक नए उपयोगकर्ता के रूप में मुझे ऐसा करने से रोका गया।

उत्तर

2

http://developer.android.com/reference/android/app/WallpaperManager.html#getDesiredMinimumWidth() और http://developer.android.com/reference/android/app/WallpaperManager.html#getDesiredMinimumHeight() द्वारा दिए गए मानों की जांच करें और इन मानों का उपयोग अपने वॉलपेपर के आयामों के रूप में करने का प्रयास करें।

1

मुझे एक ही समस्या थी। मैंने एक छवि बनाई है जो स्क्रीन का आकार है और छवि में पैडिंग जोड़ रहा है ताकि यह वॉलपेपर मैनेजर के रूप में बड़ा हो गया हो सकता हैमिनेमविड्थ() और getDesiredMinimumHeight() प्राप्त करें।

कुछ कोड स्वचालित रूप से पैडिंग जोड़ने के लिए बेहतर लग रहा था, इसलिए मैंने नीचे उपयोग किया। सुनिश्चित करें कि छवि स्क्रीन के समान आकार है।

private void setWallpaper() { 
    try { 
     WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
     //import non-scaled bitmap wallpaper 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inScaled = false; 
     Bitmap wallpaper = BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper, options); 

     if (wallpaperManager.getDesiredMinimumWidth() > wallpaper.getWidth() && 
       wallpaperManager.getDesiredMinimumHeight() > wallpaper.getHeight()) { 
      //add padding to wallpaper so background image scales correctly 
      int xPadding = Math.max(0, wallpaperManager.getDesiredMinimumWidth() - wallpaper.getWidth())/2; 
      int yPadding = Math.max(0, wallpaperManager.getDesiredMinimumHeight() - wallpaper.getHeight())/2; 
      Bitmap paddedWallpaper = Bitmap.createBitmap(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight(), Bitmap.Config.ARGB_8888); 
      int[] pixels = new int[wallpaper.getWidth() * wallpaper.getHeight()]; 
      wallpaper.getPixels(pixels, 0, wallpaper.getWidth(), 0, 0, wallpaper.getWidth(), wallpaper.getHeight()); 
      paddedWallpaper.setPixels(pixels, 0, wallpaper.getWidth(), xPadding, yPadding, wallpaper.getWidth(), wallpaper.getHeight()); 

      wallpaperManager.setBitmap(paddedWallpaper); 
     } else { 
      wallpaperManager.setBitmap(wallpaper); 
     } 
    } catch (IOException e) { 
     Log.e(TAG,"failed to set wallpaper"); 
    } 
}