2016-04-06 19 views
0

Ich entwickle eine Wallpaper-Anwendung in Android und ich finde einen richtigen Weg, scrollbare Wallpaper für meine App zu setzen. Jetzt kann mein Code Hintergrundbild aus Bitmap setzen, aber es wurde zugeschnitten, um mit einer Seite zu passen und blieb nur auf einer Seite (ich habe 5 Seiten auf dem Startbildschirm). Das bedeutet, dass der Inhalt auf jeder Seite durch das Hintergrundbild blättern kann, aber das Hintergrundbild wurde nicht gescrollt.android Scrollbare Hintergrundbild auf dem Bildschirm des Telefons programmgesteuert

Ich möchte ein scrollbares Hintergrundbild festlegen. Ich habe einige Codes aus dem Internet ausprobiert, aber sie haben nicht geholfen. Habt ihr eine Idee?

setImage_Wallpaper.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       File file = imageLoader.getDiscCache().get(urldisplay); 
       Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 
       WallpaperManager myWallpaperManager 
         = WallpaperManager.getInstance(mContext); 
       try { 
        myWallpaperManager.setBitmap(bitmap); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }); 

Und ich von diesem Code aber nicht funktionieren:

//get screen height 
Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    screenHeight = size.y; 

wallPaperBitmap= ... //your bitmap resource 

//adjust the aspect ratio of the Image 
//this is the main part 

int width = wallPaperBitmap.getWidth(); 
     width = (width * screenHeight)/wallPaperBitmap.getHeight(); 

//set the wallpaper 
//this may not be the most efficent way but it worked for me 

wallpaperManager.setBitmap(Bitmap.createScaledBitmap(wallPaperBitmap, width, height, true)); 

Antwort

0

Beitrag ist alt, aber trotzdem ... Sie können etwas ähnliches zu diesem

public static void setWallpaper(Context context) { 
    int wallpaperRId = getWallpaperImageRid(context); 

    if (wallpaperRId == 0) { 
     return; 
    } 

    Bitmap tempBmp = BitmapFactory.decodeResource(context.getResources(), wallpaperRId); 

    // get size 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 
    int area = width * height/1000; 

    width *= 2; 
    float scale = width/(float) tempBmp.getWidth(); 
    height = (int) (scale * tempBmp.getHeight()); 

    Bitmap bitmap = Bitmap.createScaledBitmap(tempBmp,width,height, true); 

    WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); 
    wallpaperManager.setWallpaperOffsetSteps(1, 1); 
    wallpaperManager.suggestDesiredDimensions(width, height); 

    try { 
     wallpaperManager.setBitmap(bitmap); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
versuchen