簡體   English   中英

在 Android 應用程序中自定義 ImageView 的 ClassNotFoundException

[英]ClassNotFoundException for custom ImageView in Android app

我收到以下異常...

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

我創建了一個自定義 ImageView 即com.widgets.utils.CustomRoundedCornerImageView並在布局 xml 中使用它。 CustomRoundedCornerImageView.java 與其他類位於 class 路徑中。

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

}

布局.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>

你能幫我為什么我得到 ClassNotFoundException 嗎?

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

在這你必須改變

<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" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM