如何在 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)方法
我正试图在 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)方法