Home » Android » ClassNotFoundException for custom ImageView in Android app

ClassNotFoundException for custom ImageView in Android app

Posted by: admin June 15, 2020 Leave a comment

Questions:

I am getting following exception…

08-12 14:19:41.564: ERROR/AndroidRuntime(797): Caused by: java.lang.ClassNotFoundException: com.widgets.utils.CustomRoundedCornerImageView in loader dalvik.system.PathClassLoader[.]

I have created a custom ImageView i.e. com.widgets.utils.CustomRoundedCornerImageView and using it in a layout xml . The CustomRoundedCornerImageView.java is in class path with other classes.

CustomRoundedCornerImageView.java

package com.widgets.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class CustomRoundedCornerImageView extends ImageView {

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

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


    @Override
    protected void onDraw(Canvas canvas) {
            Drawable drawable = getDrawable();

            Bitmap b =  ((BitmapDrawable)drawable).getBitmap() ;
            Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

            Bitmap roundBitmap = getRoundedCornerBitmap(bitmap,30);
            canvas.drawBitmap(roundBitmap, 0,0 , null);
    }

    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
        Bitmap roundedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(roundedBitmap);

        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;

        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 roundedBitmap;
    }

}

layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/picture_frame"
        android:layout_width="70px"
        android:layout_height="70px"
        android:gravity="center"
        android:layout_marginTop="5px"
        android:layout_marginLeft="40px"
        android:focusable="false"
        android:visibility="invisible"
        android:background="@drawable/picture_frame">
    <com.widgets.utils.CustomRoundedCornerImageView 
            android:id="@+id/picture"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:focusable="false" />
</LinearLayout>

Can you help me why I am getting ClassNotFoundException ?

How to&Answers:
<com.widgets.utils.CustomRoundedCornerImageView 
        android:id="@+id/picture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:focusable="false" />

in this you have to change

<ImageView class="com.widgets.utils.CustomRoundedCornerImageView" 
        android:id="@+id/picture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:focusable="false" />