В моем проекте я использую GPUImageView как ImageView
, чтобы применить к нему некоторые фильтры, моя проблема в том, что между изображением появляются два черных пробела, поскольку GPUImageView
простирается от FrameLayout
,Я не могу добавить adjustViewBounds
, я сделал какой-то трюк, но не сработал:
Я добавил временный ImageView
, после загрузки изображения я установил Bitmap
во временный ImageView
чтобы я мог получить значения Ширина и Высота следующим образом:
Glide.with(getApplicationContext()).asBitmap().load(uri).fitCenter().into(new CustomTarget<Bitmap>(2000, 2000) {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
fullImage.setScaleType(GPUImage.ScaleType.CENTER_INSIDE);
tmpImageView.setImageBitmap(resource);
tmpImageView.setVisibility(View.INVISIBLE);
ViewTreeObserver vto = tmpImageView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
tmpImageView.getViewTreeObserver().removeOnPreDrawListener(this);
mGPUImage.setLayoutParams(new FrameLayout.LayoutParams(BG_imgV.getMeasuredWidth(), BG_imgV.getMeasuredHeight(), Gravity.CENTER));
return true;
}
});
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Но ничего не работает, кто-нибудь может помочь мне решить эту проблему?