2015-09-08 4 views
0

J'ai besoin de savoir pourquoi cet extraspace est ajouté comme marge gauche. En raison de cela wakllpaper ne se paramètre pas correctement dans mon application. Si j'essaie de définir la partie la plus à gauche comme fond d'écran, la partie centrale est définie comme fond d'écran en raison de cette marge d'extraspace. cropImageAndSetWallpaper (android.net.Uri uri, com.android.wallpapercropper.WallpaperCropActivity $ OnBitmapCroppedHandler onBitmapCroppedHandler, finishActivityWhenDone booléenne)Calculs dans Cropper Wallpaper

boolean centerCrop = getResources().getBoolean(R.bool.center_crop); 
    // Get the crop 
    boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; 

    Display d = getWindowManager().getDefaultDisplay(); 

    Point displaySize = new Point(); 
    d.getSize(displaySize); 
    boolean isPortrait = displaySize.x < displaySize.y; 

    Point defaultWallpaperSize = getDefaultWallpaperSize(getResources(), 
      getWindowManager()); 
    // Get the crop 
    RectF cropRect = mCropView.getCrop(); 

    Point inSize = mCropView.getSourceDimensions(); 

    int cropRotation = mCropView.getImageRotation(); 
    float cropScale = mCropView.getWidth()/(float) cropRect.width(); 

    Matrix rotateMatrix = new Matrix(); 
    rotateMatrix.setRotate(cropRotation); 
    float[] rotatedInSize = new float[] { inSize.x, inSize.y }; 
    rotateMatrix.mapPoints(rotatedInSize); 
    rotatedInSize[0] = Math.abs(rotatedInSize[0]); 
    rotatedInSize[1] = Math.abs(rotatedInSize[1]); 

    // Due to rounding errors in the cropview renderer the edges can be slightly offset 
    // therefore we ensure that the boundaries are sanely defined 
    cropRect.left = Math.max(0, cropRect.left); 
    cropRect.right = Math.min(rotatedInSize[0], cropRect.right); 
    cropRect.top = Math.max(0, cropRect.top); 
    cropRect.bottom = Math.min(rotatedInSize[1], cropRect.bottom); 

    // ADJUST CROP WIDTH 
    // Extend the crop all the way to the right, for parallax 
    // (or all the way to the left, in RTL) 
    float extraSpace; 
    if (centerCrop) { 
     extraSpace = 2f * Math.min(rotatedInSize[0] - cropRect.right, cropRect.left); 
    } else { 
     extraSpace = ltr ? rotatedInSize[0] - cropRect.right : cropRect.left; 
    } 
    // Cap the amount of extra width 
    float maxExtraSpace = defaultWallpaperSize.x/cropScale - cropRect.width(); 
    extraSpace = Math.min(extraSpace, maxExtraSpace); 

    if (centerCrop) { 
     cropRect.left -= extraSpace/2f; 
     cropRect.right += extraSpace/2f; 
    } else { 
     if (ltr) { 
      cropRect.right += extraSpace; 
     } else { 
      cropRect.left -= extraSpace; 
     } 
    } 

    // ADJUST CROP HEIGHT 
    if (isPortrait) { 
     cropRect.bottom = cropRect.top + defaultWallpaperSize.y/cropScale; 
    } else { // LANDSCAPE 
     float extraPortraitHeight = 
       defaultWallpaperSize.y/cropScale - cropRect.height(); 
     float expandHeight = 
       Math.min(Math.min(rotatedInSize[1] - cropRect.bottom, cropRect.top), 
         extraPortraitHeight/2); 
     cropRect.top -= expandHeight; 
     cropRect.bottom += expandHeight; 
    } 
    final int outWidth = (int) Math.round(cropRect.width() * cropScale); 
    final int outHeight = (int) Math.round(cropRect.height() * cropScale); 

    Runnable onEndCrop = new Runnable() { 
     public void run() { 
      if (finishActivityWhenDone) { 
       setResult(Activity.RESULT_OK); 
       finish(); 
      } 
     } 
    }; 
    BitmapCropTask cropTask = new BitmapCropTask(this, uri, 
      cropRect, cropRotation, outWidth, outHeight, true, false, onEndCrop); 
    if (onBitmapCroppedHandler != null) { 
     cropTask.setOnBitmapCropped(onBitmapCroppedHandler); 
    } 
    cropTask.execute(); 

Répondre

0

espace supplémentaire est ajouté au fond d'écran pour permettre un effet de parallaxe. Dans le cas où votre téléphone utilise une disposition de droite à gauche, cet espace est ajouté à gauche du recadrage que vous avez choisi. Le lanceur de Google commence sur la page la plus à droite dans les mises en page RTL.

Si vous choisissez un recadrage sur le côté gauche de l'image, l'expansion se déroulera sur le côté droit du recadrage, et vous verrez principalement cette extension sur la page principale du lanceur.