圆角图像视图上的空指针异常

时间:2015-06-04 09:24:43

标签: android facebook-graph-api nullpointerexception imageview

我为圆角图像设计了一个单独的图像视图类。但是当我从Facebook(个人资料图片)中取图像时。它会抛出Null Pointer Exception。

Process: com.moblit.fooddragon, PID: 605
java.lang.NullPointerException
        at com.moblit.fooddragon.RoundedImageView.onDraw(RoundedImageView.java:44)
        at android.view.View.draw(View.java:14508)
        at android.view.View.getDisplayList(View.java:13405)

我的圆形图像查看代码:

public class RoundedImageView extends ImageView {

public RoundedImageView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public RoundedImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onDraw(Canvas canvas) {

    Drawable drawable = getDrawable();

    if (drawable == null) {
        return;
    }

    if (getWidth() == 0 || getHeight() == 0) {
        return;
    }
    Bitmap b =  ((BitmapDrawable)drawable).getBitmap() ;
    Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

    int w = getWidth(), h = getHeight();


    Bitmap roundBitmap =  getCroppedBitmap(bitmap, w);
    canvas.drawBitmap(roundBitmap, 0,0, null);

}

public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
    Bitmap sbmp;
    if(bmp.getWidth() != radius || bmp.getHeight() != radius)
        sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
    else
        sbmp = bmp;
    Bitmap output = Bitmap.createBitmap(sbmp.getWidth(),
            sbmp.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xffa19774;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    paint.setDither(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(Color.parseColor("#BAB399"));
    canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,
            sbmp.getWidth() / 2+0.1f, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(sbmp, rect, rect, paint);


    return output;
}

和获取Facebook个人资料图片的代码:

ImageRequest imageRequest=new ImageRequest(url,
                    new Response.Listener<Bitmap>() {
                        @Override
                        public void onResponse(Bitmap response) {
                            Toast.makeText(context,"Got Bitmap",Toast.LENGTH_SHORT).show();
                            profilePicture=response;
                        }
                    },0,0,null,new Response.ErrorListener(){
                public void onErrorResponse(VolleyError error) {
                }
            });
            requestQueue.add(imageRequest);

            NavigationDrawerFragment.imgAvatar.setImageBitmap(profilePicture);

0 个答案:

没有答案