2013-09-30 2 views
0

У меня возникла эта проблема, и я знаю, что это распространено, проблема в том, что я уже применил код для рисования, here. Теперь, так как мой ImageView установил ширину и высоту, равную 50dp, округленный угол не достигнут.Как сделать угол изображения внутри ImageView круглым?

Так что я использовал альтернативу XML, здесь:

<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <stroke 
     android:width="1dp" 
     android:color="#999999" /> 
    <padding android:left="2dp" 
      android:top="2dp" 
      android:right="2dp" 
      android:bottom="2dp"/> 
    <solid android:color="#ffffff" /> 
    <corners android:radius="15dp" /> 
</shape> 

Я сделал это в качестве фона в ImageView, сейчас проблема в том, что только влияние круглого углу сам, а не его ImageView содержимое изображения. Нормальный (прямоугольный или острый) край изображения по-прежнему перекрывает контейнер, который является ImageView. Я также установил этот android:scaleType="centerCrop" в моем ImageView.

Я теперь смущен, поэтому установка ширины и высоты ImageView лишает эффект закругленного угла? Что мне делать?

+1

http://stackoverflow.com/questions/16695023/how-to-create-a-background-with-image-rounded-corners-without-borders/16695407 # 16695407. проверьте это – Raghunandan

+0

использовать холст, чтобы нарисовать форму –

+0

@ShakeebShaheen У меня есть. Я использовал код из [здесь] (http://stackoverflow.com/a/3292810/1968739). –

ответ

2

Вот полный пример: https://github.com/vinc3m1/RoundedImageView

Проверьте это.

+0

У меня возникли проблемы с запуском проекта roundedimageview, его цель проекта - уровень API 8, а метод класса 'setBackground' произошел с ошибкой поэтому я изменил его на уровень API 16. После запуска из Eclipse он ничего не отображал в устройстве. Я что-то пропустил? –

+0

Есть 2 проекта. Первый - «roundedimageview», после его импорта откройте «Свойства»> «Android»> «Проверить библиотеку». Второй пример «пример», после его импорта откройте «Свойства»> «Android»> в разделе «Библиотека», выберите «Добавить» и выберите «roundedimageview», а затем нажмите «ОК». Постройте 1-й проект, а затем 2-й. Теперь запустите 2-й, и он должен открыть. –

1

попробовать это ...

public static Bitmap getRoundCorneredBitmapFrom(Bitmap bitmap,int cornerRadius) { 
     if (bitmap == null) { 
      return null; 
     } 
     if (cornerRadius < 0) { 
      cornerRadius = 0; 
     } 
     // Create plain bitmap 
     Bitmap canvasBitmap = Bitmap.createBitmap(bitmap.getWidth(), 
       bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas canvas = getCanvas(canvasBitmap); 

     Paint paint = getPaint(); 

     Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
     RectF rectF = new RectF(rect); 

     canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint); 

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

     return canvasBitmap; 
    } 
    private static Canvas getCanvas(Bitmap bitmap) { 
    Canvas canvas = new Canvas(bitmap); 
    canvas.drawARGB(0, 0, 0, 0); 
    return canvas; 
    } 
    private static Paint getPaint() { 
    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setColor(Color.WHITE); 
    return paint; 
} 
+0

Спасибо за это, но кажется, что методы 'getCanvas()' и 'getPaint()' не определены. –

+0

работает над кодом из неинтерфейса, поскольку требуется некоторое время для запуска –

Смежные вопросы