NetworkImageView类强制转换异常

时间:2015-04-19 12:41:31

标签: android android-view networkimageview

CircularNetworkImageView thumbNail = ((CircularNetworkImageView) convertView.findViewById(R.id.UserImage));
 thumbNail.setImageUrl(m.getThumbnailUrl(),imageLoader);

自定义网络ImageView类

public class CircularNetworkImageView extends NetworkImageView {
Context mContext;

public CircularNetworkImageView(Context context) {
    super(context);
    mContext = context;
}

public CircularNetworkImageView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
    mContext = context;
}

public CircularNetworkImageView(Context context, AttributeSet attrs,
                                int defStyle) {
    super(context, attrs, defStyle);
    mContext = context;
}

@Override
public void setImageBitmap(Bitmap bm) {
    if(bm==null) return;
    setImageDrawable(new BitmapDrawable(mContext.getResources(),
            getCircularBitmap(bm)));
}

/**
 * Creates a circular bitmap and uses whichever dimension is smaller to determine the width
 * <br/>Also constrains the circle to the leftmost part of the image
 *
 * @param bitmap
 * @return bitmap
 */
public Bitmap getCircularBitmap(Bitmap bitmap) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(output);
    int width = bitmap.getWidth();
    if(bitmap.getWidth()>bitmap.getHeight())
        width = bitmap.getHeight();
    final int color = 0xff424242;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, width, width);
    final RectF rectF = new RectF(rect);
    final float roundPx = width / 2;

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);

    return output;
}

}

错误

04-19 18:08:35.199:E / AndroidRuntime(2432):java.lang.ClassCastException:com.android.volley.toolbox.NetworkImageView无法强制转换为model.CircularNetworkImageView

1 个答案:

答案 0 :(得分:1)

这是因为您从findViewById()获得的对象是NetworkImageView,而不是CircularNetworkImageView。您必须创建自己的xml CircularNetworkImageView元素,或使其成为NetworkImageView的包装并使用它。