下面列出了怎么用com.bumptech.glide.request.target.SizeReadyCallback的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void onBindViewHolder(final ViewHolder holder,final int position) {
Girl entity = mListData.get(position);
Glide.with(mContext)
.load(entity.url)
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.dontAnimate()
.into(holder.mIvIndexPhoto)
.getSize(new SizeReadyCallback() {
@Override
public void onSizeReady(int width, int height) {
//holder.mIvIndexPhoto.setColorFilter(mColorFilter);
}
});
holder.mTvTime.setText(DateUtil.toDate(entity.publishedAt));
if(mIClickItem!=null){
holder.mIvIndexPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mIClickItem.onClickPhoto(position, holder.mIvIndexPhoto,holder.mTvTime);
}
});
}
}
@Override
public void getSize(SizeReadyCallback cb) {
// FIXME 这里为了图方面,直接加载原图了,生产环境上应该是高和宽都取mView.getDrawableSize()。
// 但是这里直接取的话也不一定能取到正确的值,所以建义在
// android.view.ViewTreeObserver.OnPreDrawListener中做处理。
// 另外,DrawableSize会因图片数量改变而改变,所以建义异步加载图像之前
// 应当先设置占位图。如果图片的数量是动态可变的的话,也建义做针对性处理。
cb.onSizeReady(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
@Override
public void getSize(@NonNull SizeReadyCallback cb) {
if (!Util.isValidDimensions(width, height)) {
throw new IllegalArgumentException(
"Width and height must both be > 0 or Target#SIZE_ORIGINAL, but given" + " width: "
+ width + " and height: " + height + ", either provide dimensions in the constructor"
+ " or call override()");
}
cb.onSizeReady(width, height);
}
@Override
public void getSize(SizeReadyCallback cb) {
int maxWidth = getRealWidth(), maxHeight = Integer.MAX_VALUE;
if (config.imageFixCallback != null) {
holder.setImageState(ImageHolder.ImageState.SIZE_READY);
ImageHolder.SizeHolder sizeHolder = new ImageHolder.SizeHolder(0, 0);
config.imageFixCallback.onSizeReady(holder, 0, 0, sizeHolder);
if (sizeHolder.isInvalidateSize()) {
maxWidth = sizeHolder.getWidth();
maxHeight = sizeHolder.getHeight();
}
}
cb.onSizeReady(maxWidth, maxHeight);
}
/**
* A callback that should never be invoked directly.
*/
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(width, height);
}
public SizeViewTarget(View view, SizeReadyCallback callback) {
super(view);
getSize(callback);
}
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(photoWidth, photoHeight);
}
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
@Override
public void getSize(SizeReadyCallback cb) {
if (target != null) target.getSize(cb);
}
@Override
public void getSize(@NonNull SizeReadyCallback cb) {
cb.onSizeReady(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
@Override
public void removeCallback(@NonNull SizeReadyCallback cb) {}
@Override public void getSize(SizeReadyCallback cb) {
target.getSize(cb);
}
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(dpToPx(ICON_SIZE), dpToPx(ICON_SIZE));
}
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(size, size);
}
@Override
public void getSize(SizeReadyCallback cb) {
cb.onSizeReady(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
@Override
public void getSize(SizeReadyCallback cb) {
target.getSize(cb);
}
@Override
public final void getSize(@NonNull SizeReadyCallback cb) {
cb.onSizeReady(width, height);
}
@Override
public final void removeCallback(@NonNull SizeReadyCallback cb) {
// Do nothing, this class does not retain SizeReadyCallbacks.
}
@Override
public void removeCallback(@NonNull SizeReadyCallback cb) {
}