Как сделать ImageView с закругленными углами?

Альтернативой является запись Java-хранимой процедуры (внутри базы данных есть JVM), это означает, что вы можете использовать java.util.StringTokenizer. Вы должны перенести хранимый в Java процесс внутри процедуры / функции PL / SQL.

Здесь для примера: http://forums.oracle.com/forums/thread.jspa?messageID=2575374�

Печально Я не понимаю проверенные исключения Java, поэтому обработка исключений не очень велика (я не Java-разработчик).

512
задан Jonik 8 June 2016 в 08:40
поделиться

4 ответа

Это довольно поздно для ответа, но для всех, кто ищет это, вы можете выполнить следующий код, чтобы вручную округлить углы ваших изображений.

http://www.ruibm.com/?p=184

Это не мой код, но я его использовал, и он прекрасно работает. Я использовал его в качестве помощника в классе ImageHelper и немного расширил его, чтобы передать степень растушевки, которая мне нужна для данного изображения.

Окончательный код выглядит так:

package com.company.app.utils;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;

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

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

Надеюсь, это кому-то поможет!

538
ответ дан 22 November 2019 в 22:24
поделиться

Вы должны расширить ImageView и нарисовать свой собственный прямоугольник с закругленными углами.

Если вам нужна рамка вокруг изображения, вы также можете наложить закругленную рамку поверх изображения в макете.

[править] Наложите рамку на исходное изображение, например, используя FrameLayout . Первым элементом FrameLayout будет изображение, которое вы хотите отобразить скругленным. Затем добавьте еще один ImageView с рамкой. Второй ImageView будет отображаться поверх исходного ImageView , и, таким образом, Android отобразит его содержимое над исходным ImageView .

7
ответ дан 22 November 2019 в 22:24
поделиться

При помощи ниже кода можно изменить радиус верхнего угла

val image = findViewById<ImageView>(R.id.image)
val curveRadius = 20F

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

    image.outlineProvider = object : ViewOutlineProvider() {

        @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
        override fun getOutline(view: View?, outline: Outline?) {
            outline?.setRoundRect(0, 0, view!!.width, (view.height+curveRadius).toInt(), curveRadius)
        }
    }

    image.clipToOutline = true

}
0
ответ дан 22 November 2019 в 22:24
поделиться

Для меня следующее решение, кажется, является самым изящным:

 ImageView roundedImageView = new ImageView (getContext());
                    roundedImageView.setClipToOutline(true);
                    Bitmap bitmap = AppUtil.decodeSampledBitmapFromResource(new File(valueListItemsView.getImagePath()), width, height);
                    roundedImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    roundedImageView.setImageBitmap(bitmap);
                    roundedImageView.setBackgroundResource(R.drawable.rounded_corner);

и код для drawable rounded_corner.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/colorAccent" />
    <corners android:radius="24dp" />
 </shape>
0
ответ дан 22 November 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: