我无法使用圆形图像视图在Android Studio中

问题描述:

我已经加入依赖编译 'de.hdodenhof:circleimageview:2.0.0'我无法使用圆形图像视图在Android Studio中

我的XML文件

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<android.support.constraint.ConstraintLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<de.hdodenhof.circleimageview.CircleImageView 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/profile_image" 
    android:layout_width="96dp" 
    android:layout_height="96dp" 
    android:src="@drawable/profile" 

    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    tools:layout_constraintTop_creator="1" 
    tools:layout_constraintRight_creator="1" 
    android:layout_marginTop="57dp" 
    tools:layout_constraintLeft_creator="1" 
    app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 
<android.support.design.widget.NavigationView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:layout_gravity="start" 

    app:menu="@menu/profile_menu"> 

</android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

还是我得到在这条线“de.hdodenhof.circleimageview.CircleImageView”

+0

请发表您的构建。 gradle文件 – Bob

+1

并发布您的整个XML文件和错误日志。 – Bob

+0

我已经添加了我的gradle文件@Bob – Chirag

在XML布局中使用运行时异常 错误充气类象下面

<com.example.myproject.CircularImageView 
    android:id="@+id/profile_pic_round" 
    android:layout_width="@dimen/width_150dp" 
    android:layout_height="@dimen/height_150dp" 
    android:layout_gravity="center" 
    android:layout_margin="@dimen/margin_all_side_20dp" 
    android:src="@drawable/provider" /> 

然后在你的java文件定期初始化imageview的象下面这样:

ImageView profilePictureImg = (ImageView) 
    view.findViewById(R.id.profile_pic_round); 

而且你可以在你的工具包使用这个类或任何你想要的:

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

public class CircularImageView extends ImageView { 


public CircularImageView(Context ctx, AttributeSet attrs) { 
    super(ctx, attrs); 
} 


@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(Config.ARGB_8888, true); 

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


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

    } 

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

    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, finalBitmap.getWidth(), finalBitmap.getHeight()); 

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


    return output; 
    } 

    }