如何在 Android 中为 ImageView 提供斜率

How to give Slope to ImageView in Android

我正试图在 ImageView 中提供一些坡度。有可能吗?如果是那么怎么办?

下图显示了我想要做的事情。我在 ImageView 中突出显示了斜率。

感谢您的帮助

试试这个,API > 11

mImageView.setRotation(angle);

和API>=11

你也可以从xml

设置
android:rotation="90"

您可以通过多种方式实现您想要实现的目标。

第一种方法 - 使用叠加图像

这可能是最直接的实现方法。创建一个位图或一个可绘制对象,它本质上是一个具有所需背景颜色的三角形(在您的示例中为深红色),并将其提供给放置在原始 ImageView 上的 ImageView,与底部。这个新的 ImageView 基本上会遮挡掉原来 ImageView 的底部,给你想要的效果。

第二种方法 - 使用图像遮罩

此方法稍微复杂一些,但无需在布局中添加额外的 ImageView。基本上,这意味着您需要在将位图设置到 ImageView 之前对位图进行一些处理,并且您将需要一个额外的位图来定义生成图像的形状。该位图将是您图像的 "mask"。 Click here 查看有关如何执行此操作的示例。

您可以像这样扩展 ImageView 并覆盖 onDraw 方法:

Paint paint=new Paint();
paint.setColor(Color.BLACK);
@Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);            
            Path p=new Path();
            //start from bottom left corner
            p.moveTo(0,canvas.getHeight());
            //move to the offset
            p.lineTo(canvas.getWidth(),YOUR_OFFSET);
            //move to bottom right corner
            p.lineTo(canvas.getWidth(),canvas.getHeight());
            //return to bottom left corner
            p.lineTo(0,canvas.getHeight());
            //clsoe the path
            p.close();
            canvas.drawPath(p,paint);
        }

万一您想用某种颜色绘制该区域。

否则,您可以定义裁剪区域并使用canvas.clipPath(Path path)方法