如何在Android中为ImageView提供Slope

时间:2016-03-28 10:58:12

标签: android imageview android-imageview

我试图在ImageView中给出一些斜率。有可能吗?如果是,那怎么样?

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

enter image description here

感谢您提供任何帮助

3 个答案:

答案 0 :(得分:2)

您尝试实现的目标可以通过几种方式完成。

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

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

第二种方法 - 使用图像蒙版

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

答案 1 :(得分:0)

尝试使用API​​> 11

mImageView.setRotation(angle);

API> = 11

您也可以从xml

设置它
android:rotation="90"

答案 2 :(得分:0)

您可以像这样扩展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)方法