Android WallpaperManager cosecha la imagen
Estoy trabajando en una simple aplicación de fondo de pantalla de algunas imágenes que tengo. Son archivos .png en carpetas dibujables.
Estos son algunos fragmentos de código:
- Layout botones para que cada uno divide el espacio por igual
- android webview setdefaultfontsize (tamaño int), ¿cuál es la unidad de tamaño?
- ¿Por qué Facebook SDK para Android es tan grande?
- Tamaño de fuente pequeño en el emulador de Android
- Disposición androide flexible para múltiples tamaños / densidades de pantalla
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext()); .... myWallpaperManager.setResource(R.drawable.image1);
No importa qué tamaño o resolución parezco utilizar, cuando el papel pintado se fija cosecha la imagen original. Cuando utilizo la misma imagen que un fondo es el tamaño correcto y muestra toda la imagen. Pensé que podría ser un problema con mi emulador por lo que he intentado ejecutarlo en un dispositivo real (HTC eris) y estoy teniendo el mismo problema. He hecho la imagen del tamaño de la pantalla y la resolución de la eris y todavía está recortándolo. Luego hice la imagen de sólo una pulgada de alto y una resolución de 100 dpi. Era muy pixelated en el eris, pero todavía cosechó la imagen.
Cualquier ayuda sería muy apreciada.
Intenté agregar algunas imágenes para mostrar el antes y el después, pero como un usuario más nuevo me impedían hacerlo.
- Inconsistencia al establecer el tamaño de fuente de TextView en el código y en los recursos
- Android: ImageView escala la imagen de origen
- Cómo corregir el error en el tamaño de mapa de bits supera el presupuesto de VM
- ¿Cómo obtener el tamaño de pantalla del dispositivo?
- Android codificar imagen con límite de tamaño máximo
- ¿Por qué el tamaño de mapa de bits es más grande en la memoria que en el disco en Android?
- Archivos de 0 bytes no detectados al descargar archivos en Android
- Android: Cambiar el tamaño de los mapas de bits sin perder calidad
Compruebe los valores devueltos por http://developer.android.com/reference/android/app/WallpaperManager.html#getDesiredMinimumWidth () y http://developer.android.com/reference/android/app/WallpaperManager.html#getDesiredMinimumHeight () Y tratar de utilizar estos valores como las dimensiones de su fondo de pantalla.
Yo tuve el mismo problema. Hice una imagen que es el tamaño de la pantalla y añadir relleno a la imagen para que sea tan grande como el WallpaperManager getDesiredMinimumWidth () y getDesiredMinimumHeight ().
Parecía mejor tener algún código añadir automáticamente el relleno de modo que es lo que usé a continuación. Asegúrese de que la imagen tenga el mismo tamaño que la pantalla.
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"); } }
- El método setLocalDispatchPeriod (int) del tipo GAServiceManager está obsoleto
- PhoneGap / Cordova Android obtener el tamaño de la pantalla después de onDeviceReady