2012-07-10 24 views
5

Estoy desarrollando una aplicación que selecciona una imagen de la galería y luego establece esa imagen como fondo de pantalla. Pero aquí el problema es que solo una parte de la imagen se configura como fondo de pantalla, no como imagen completa, pero quiero configurar toda la imagen como fondo de pantalla. ¿puedes decirme cómo se puede hacer eso?cómo ajustar toda la imagen en la pantalla como fondo de pantalla

Aquí está mi código ...

public class Scaleimage extends Activity { 
    /** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String FileName; 
     File file = new File("/sdcard/pictures"); 
     File[] imageFiles = file.listFiles(); 
     if(imageFiles.length > 0) { 
      FileName = imageFiles[0].getName(); 
     final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext()); 
     Bitmap myBitmap = BitmapFactory.decodeFile("/sdcard/pictures" + "/" + FileName); 

     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
     int height = displayMetrics.heightPixels; 
     int width = displayMetrics.widthPixels << 1; 
     myBitmap = Bitmap.createScaledBitmap(myBitmap,width, height, true); 
     try { 
      wallpaperManager.setBitmap(myBitmap); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

¿Está creando su propia aplicación de fondo de pantalla, o está usando el fondo de pantalla? – XGouchet

Respuesta

7

Establecer tamaño de fondo de pantalla para el tamaño de la imagen:

WallpaperManager wm = (WallpaperManager) getSystemService(WALLPAPER_SERVICE); 
wm.setBitmap(bitmap); 
wm.suggestDesiredDimensions(w, h); 

y recuerde agregar permisos:

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/> 
<uses-permission android:name="android.permission.SET_WALLPAPER"/> 
+0

Gracias. Funcionó para mí – moDev

+2

Tenga en cuenta el mensaje de la documentación sobre el método 'suggestDesiredDimensions()': ** "Tenga en cuenta los desarrolladores, que no parecen estar leyendo esto. Esto es para que las pantallas de inicio digan qué tamaño de fondo de pantalla les gustaría. Nadie debería estar ¡Llamando esto! Ciertamente no son otras aplicaciones que no son de la pantalla de inicio que cambian el fondo de pantalla. Se supone que esas aplicaciones recuperan el tamaño sugerido para que puedan construir un fondo de pantalla que coincida con él ". ** –

0

Inténtelo tengo probado que está funcionando espero que lo ayude:

final WallpaperManager wallpaperManager = (WallpaperManager)getSystemService(
       Context.WALLPAPER_SERVICE);  

Bitmap myBitmap = Bitmap.createScaledBitmap(Const.cropped_bitmap, wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight(), true); 
wallpaperManager.suggestDesiredDimensions(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()); 

try { 

    wallpaperManager.setBitmap(myBitmap); 
    Toast.makeText(CropImageActivity.this, CropImageActivity.this.getString(R.string.wallpaper_has_been_set), 0).show(); 
} catch (IOException e) { 
    e.printStackTrace(); 
    Toast.makeText(CropImageActivity.this, "Wallpaper not set", 0).show(); 
} 
Cuestiones relacionadas