相关疑难解决方法(0)

绘制带圆角的ImageView时的效率

我有一个ImageView子类,我用它来绘制带圆角的图像.代码基于这个答案,如下:

public class ImageViewRoundedCorners extends ImageView {
    ...
    @Override
    protected void onDraw(Canvas canvas) {
        Bitmap scaledBitmap = Bitmap.createBitmap(getMeasuredWidth(),
                                                  getMeasuredHeight(),
                                                  Bitmap.Config.ARGB_8888); 
        Canvas scaledCanvas = new Canvas(scaledBitmap);
        super.onDraw(scaledCanvas); 
        drawRoundedCornerBitmap(canvas, scaledBitmap, 
                                getMeasuredWidth(), getMeasuredHeight());

        scaledBitmap.recycle();
    }

    protected void drawRoundedCornerBitmap(Canvas outputCanvas, Bitmap input, int w, int h) {
        Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        mPaint.reset();
        mPaint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);

        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawPath(mClipPath, mPaint);

        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(input, 0, 0, mPaint);

        outputCanvas.drawBitmap(output, 0, 0, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,可以使用正确的圆角绘制图像.为了避免前两行的分配 …

graphics android android-custom-view

6
推荐指数
1
解决办法
1831
查看次数

如何使用中心裁剪创建部分圆角矩形可绘制而不创建新位图?

背景

我已经看到了如何创建一个可绘制这是圆了一个位图,以及如何添加一个大纲(AKA中风)周围,这里.

问题

我无法找到如何在不绘制新位图的情况下仅对位图的某些角进行舍入,而不是创建新的位图,并且仍然可以用于中心裁剪ImageView.

我发现了什么

这是我发现的,但它确实创建了一个新的位图,并且在带有center-crop的imageView中使用它时(源于此处):

/**
 * Create rounded corner bitmap from original bitmap.
 *
 * @param input                               Original bitmap.
 * @param cornerRadius                        Corner radius in pixel.
 * @param squareTL,squareTR,squareBL,squareBR where to use square corners instead of rounded ones.
 */
public static Bitmap getRoundedCornerBitmap(final Bitmap input, final float cornerRadius, final int w, final int h,
                                            final boolean squareTL, final boolean squareTR, final boolean squareBL, final boolean squareBR) {
    final Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888); …
Run Code Online (Sandbox Code Playgroud)

android bitmap rounded-corners drawable

6
推荐指数
2
解决办法
1787
查看次数

滑行:仅在顶部显示半径角的图像

我使用Glide。以下代码段:

Glide.with(context).load(referenceUrl).into(holder.imageViewPhoto);
Run Code Online (Sandbox Code Playgroud)

好。很好 但是我需要仅在TOP上显示带有圆角的图像。

像这样:

半径

Glide有可能吗?

android android-glide

6
推荐指数
1
解决办法
2348
查看次数

Android中Imageview的圆角

我在linearlayout中有一个textview和imageview.Textview位于顶部,imageview位于底部.我使用下面的线条为linearlayout设置了圆角.但是imageview角落并没有四舍五入.我看到只有linearlayout的顶角是圆形的.我如何才能获得imageview的圆角?(如果删除imageview,我看到所有的角都是圆角的)

rounded_corners.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<solid android:color="#ffffff" />


<corners
    android:bottomLeftRadius="8dp"
    android:bottomRightRadius="8dp"
    android:topLeftRadius="8dp"
    android:topRightRadius="8dp" />

</shape>
Run Code Online (Sandbox Code Playgroud)

main.xml中

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="50dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="50dp"
    android:background="@xml/rounded_corners"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="xxxxxxxx" />

    <ImageView     
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@drawable/my_image_view" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

屏幕截图: 在此输入图像描述

android rounded-corners imageview android-linearlayout

5
推荐指数
2
解决办法
1万
查看次数

Android:如何以编程方式仅舍入位图的顶角?

我目前正在使用此代码:

@Override
public Bitmap transform(Bitmap source) {
    Bitmap result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(result);

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

    final float scale = context.getResources().getDisplayMetrics().density;
    final float roundDp = 10 * scale;

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawRoundRect(rectF, roundDp, roundDp, paint);

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(source, rect, rect, paint);
    source.recycle();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但问题是这种方法只允许我一次修改所有4个角.我怎么只绕图像的底角?

java android bitmap

5
推荐指数
1
解决办法
6953
查看次数

圆形图像视图与文本

有人知道如何制作这样的东西吗?

在此输入图像描述

我试过在这里找到Android的解决方案如何在具有imageview和文本视图的圆形中创建这样的视图

试图玩de.hdodenhof.circleimageview.CircleImageView,但仍然无法找到任何解决方案.

geometry android image view

5
推荐指数
0
解决办法
1796
查看次数

Xamarin上的圆形ImageView

我正在开发一个Xamarin Android应用程序,我需要制作一个循环ImageView.

怎么能实现这一目标?

android imageview xamarin.android xamarin

5
推荐指数
1
解决办法
3817
查看次数

使用Android中的Path和RectF在左上角右上角左下角绘制圆角

通过制作自定义ImageView并使用以下方法覆盖onDraw方法将使ImageView具有圆角.参考

@Override
protected void onDraw(Canvas canvas) {
    float radius = getContext().getResources().getDimension(R.dimen.round_corner_radius);
    Path path = new Path();
    RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
    path.addRoundRect(rect, radius, radius, Path.Direction.CW);
    canvas.clipPath(path);
    super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)

如何选择性地制作圆角而不是将所有四个角都圆.例如,仅使左上角和右上角成圆形并保持底角完好无损.这是一个通过Bitmap做的解决方案.我正在寻找这个onDraw方法,只使用Path和RectF.

android rounded-corners imageview

5
推荐指数
1
解决办法
3130
查看次数

图层列表中平铺位图的剪辑角

我希望完成一些看起来像这里底部的操作(对于所有四个角,但是我只显示图像的底部):

在此处输入图片说明

到目前为止,我有:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个tiiiny在每个角落像素,按预览:

在此处输入图片说明

那么,我该如何抓住那些角落?可见的笔触不是它,不是实际需要的...


尝试过的事情:

将固体添加到项目中可以得到与我想要的完全相反的效果。可能有掩盖技巧...

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <color android:color="@color/white" />
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


磁贴:

一个简单的瓷砖

android android-resources layer-list

5
推荐指数
1
解决办法
862
查看次数

如何使用三个角和阴影制作图像视图

图片

如何制作只有三个角的图像,我尝试使用框架布局插入图像视图,并使其成为原始图像的资源,添加另一个具有 3 个角的边框 src 的图像视图,但它不起作用

xml android imageview material-components-android

5
推荐指数
1
解决办法
1754
查看次数