Skip to content

Please some one help me to add bitmap center crop #151

@Itscrazyshivam

Description

@Itscrazyshivam

Hello,
i am trying to add center crop in my code but i get issue please help me to solve this.

here is my current codes,
//set wallpaper on Home Screen
private void setWallpaperToHomeScreen() {
relativeLayoutLoadMore.setVisibility(View.VISIBLE);
Glide.with(this)
.asBitmap()
.load(Config.ADMIN_PANEL_URL+"/images/"+arrayList.get(currentPosition).getImage_url())
.into(new CustomTarget() {
@RequiresApi(api = Build.VERSION_CODES.N)
@OverRide
public void onResourceReady(@nonnull Bitmap resource, @nullable Transition<? super Bitmap> transition) {

                    WallpaperManager wallpaperManager = WallpaperManager.getInstance(WallpaperDetailsActivity.this);
                    try {

                        DisplayMetrics metrics = new DisplayMetrics();
                        getWindowManager().getDefaultDisplay().getMetrics(metrics);
                        int height = metrics.heightPixels;
                        int width = metrics.widthPixels;
                        Bitmap bitmap = Bitmap.createScaledBitmap(resource,width,height, true);
                        wallpaperManager.getDesiredMinimumWidth();//returned 1280 on s3
                        wallpaperManager.getDesiredMinimumHeight();//also returned 1280 on s3
                        wallpaperManager.suggestDesiredDimensions(width, height);
                        wallpaperManager.setBitmap(bitmap,null, true, WallpaperManager.FLAG_SYSTEM);
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                Snackbar.make(rootLayout,"Wallpaper was set successfully",Snackbar.LENGTH_LONG).show();
                                relativeLayoutLoadMore.setVisibility(View.GONE);
                                showFullScreenAds();
                            }
                        }, Constant.DELAY_SET_WALLPAPER);
                    } catch (IOException e) {
                        e.printStackTrace();
                        relativeLayoutLoadMore.setVisibility(View.GONE);
                    }

                }
                @Override
                public void onLoadCleared(@Nullable Drawable placeholder) {

                }
    });
}

Code that i want add in my app
public static void setWallpaper(Context context, BitmapDrawable wallpaper) {

try {

        WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);

                if(wallpaper != null) {

                            Bitmap bmp = wallpaper.getBitmap();

                                        DisplayMetrics metrics = new DisplayMetrics();

                                                    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

                                                                windowManager.getDefaultDisplay().getMetrics(metrics);

                                                                            int height = metrics.heightPixels;

                                                                                        int width = metrics.widthPixels;

                                                                                                    wallpaperManager.setWallpaperOffsetSteps(1, 1);

                                                                                                                wallpaperManager.suggestDesiredDimensions(width, height);

                                                                                                                            Bitmap bitmap = centerCropWallpaper(context, bmp, Math.min(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()));

                                                                                                                                        wallpaperManager.setBitmap(bitmap);

                                                                                                                                                } else {

                                                                                                                                                            Log.e(TAG, "wallpaper could not be set.");

                                                                                                                                                                    }

                                                                                                                                                                        } catch (Exception ex) {

                                                                                                                                                                                Log.e(TAG, "error setting wallpaper. " + ex.getMessage(), ex);

                                                                                                                                                                                    }

                                                                                                                                                                                    }

private static Bitmap centerCropWallpaper(Context context, Bitmap wallpaper, int desiredHeight){

float scale = (float) desiredHeight / wallpaper.getHeight();

    int scaledWidth = (int) (scale * wallpaper.getWidth());

        DisplayMetrics metrics = new DisplayMetrics();

            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

                windowManager.getDefaultDisplay().getMetrics(metrics);

                    int deviceWidth = metrics.widthPixels;

                        int imageCenterWidth = scaledWidth /2;

                            int widthToCut = imageCenterWidth - deviceWidth / 2;

                                int leftWidth = scaledWidth - widthToCut;

                                    Bitmap scaledWallpaper = Bitmap.createScaledBitmap(wallpaper, scaledWidth, desiredHeight, false);

                                        return Bitmap.createBitmap(scaledWallpaper, widthToCut, 0, leftWidth, desiredHeight);

                                        }

please help me to add this my app

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions