0

J'ai une application de fond d'écran, qui définit une image sélectionnée comme arrière-plan pour le menu du téléphone. Il est défilable (par défaut), mais le problème est que l'arrière-plan est juste une découpe de l'image originale. Voici mon code pour définir l'image comme arrière-plan:Application de fond d'écran Android - Redimensionnement d'images pour le fond défilement

private Bitmap image = [...]; 

[...] 

private void setBackgroundImage(){ 
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 
try { 
     wallpaperManager.setBitmap(pic); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Ma question est maintenant: Comment puis-je déterminer la bonne taille de l'image, de sorte que chaque téléphone a toute l'image comme il est l'image de fond et pas seulement un coupé?

+0

Comment obtenez-vous le bitmap que vous avez défini pour le gestionnaire de fonds d'écran? – pablobu

+0

plz, vous pouvez essayer mon post. S'il vous plaît – omor

Répondre

0

mon fichier java: comme celui-ci

public class MainActivity extends AppCompatActivity { 

    Button button; 
    ImageView imageView; 
    WallpaperManager wallpaperManager ; 
    Bitmap bitmap1, bitmap2 ; 
    DisplayMetrics displayMetrics ; 
    int width, height; 
    BitmapDrawable bitmapDrawable ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button)findViewById(R.id.button); 

     imageView = (ImageView)findViewById(R.id.imageView); 

     wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 

     bitmapDrawable = (BitmapDrawable) imageView.getDrawable(); 

     bitmap1 = bitmapDrawable.getBitmap(); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       GetScreenWidthHeight(); 

       SetBitmapSize(); 

       wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 

       try { 

        wallpaperManager.setBitmap(bitmap2); 

        wallpaperManager.suggestDesiredDimensions(width, height); 


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

    public void GetScreenWidthHeight(){ 

     displayMetrics = new DisplayMetrics(); 

     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

     width = displayMetrics.widthPixels; 

     height = displayMetrics.heightPixels; 

     Toast.makeText(MainActivity.this,"width:"+width+", height:"+height,Toast.LENGTH_SHORT).show(); 

    } 

    public void SetBitmapSize(){ 

     bitmap2 = Bitmap.createScaledBitmap(bitmap1, width, height, false); 

    } 
} 

et mon dossier de mise en page. comme ceci:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/imageView" 
     android:src="@drawable/sample_image_wallpaper"/> 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Click here to Set this image as Wallpaper in android programmatically" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="94dp" /> 

</RelativeLayout> 

Espérons que cela aidera.