10

ここにある変換ガイドに従って、Glide ライブラリを初めて使用します: https://github.com/bumptech/glide/wiki/Transformations

カスタム変換を作成しようとしていますが、Transformation クラスのtransformメソッドにブレークラインを配置すると、それが呼び出されないことがわかります。

以下は私のコードです:

private static class CustomTransformation extends BitmapTransformation {

    private Context aContext;

    public CustomTransformation(Context context) {
        super(context);
        aContext = context;
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return bitmapChanger(toTransform, 1080, (int) aContext.getResources().getDimension(R.dimen.big_image));
    }

    @Override
    public String getId() {
        return "some_id";
    }

}

private static Bitmap bitmapChanger(Bitmap bitmap, int desiredWidth, int desiredHeight) {
    float originalWidth = bitmap.getWidth();
    float originalHeight = bitmap.getHeight();

    float scaleX = desiredWidth / originalWidth;
    float scaleY = desiredHeight / originalHeight;

    //Use the larger of the two scales to maintain aspect ratio
    float scale = Math.max(scaleX, scaleY);

    Matrix matrix = new Matrix();

    matrix.postScale(scale, scale);

    //If the scaleY is greater, we need to center the image
    if(scaleX < scaleY) {
        float tx = (scale * originalWidth - desiredWidth) / 2f;
        matrix.postTranslate(-tx, 0f);
    }

    return Bitmap.createBitmap(bitmap, 0, 0, (int) originalWidth, (int) originalHeight, matrix, true);
}

2 つの方法で Glide を開始しようとしました。

Glide.with(this).load(url).asBitmap().transform(new CustomTransformation(this)).into(imageView);

Glide.with(this).load(url).bitmapTransform(new CustomTransformation(this)).into(imageView);

しかし、どちらも機能しません。何か案は?繰り返しますが、私は Matrix 自体についてアドバイスを求めているわけtransform(...)ではありません。ありがとう!

4

1 に答える 1