【问题标题】:How to give Slope to ImageView in Android如何在 Android 中为 ImageView 提供斜率
【发布时间】:2016-03-28 10:58:12
【问题描述】:

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

下面的图片正是我想要做的。我在ImageView 中突出显示了斜率。

感谢您的帮助

【问题讨论】:

    标签: android imageview android-imageview


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的回答。它工作正常!但要注意的是,我们需要创建蒙版图像。我们不能使用普通图像作为蒙版图像。
    • 您可以从以下链接屏蔽您的图像:www166.lunapic.com/editor/?action=mask
    【解决方案2】:

    试试这个,API > 11

    mImageView.setRotation(angle);
    

    使用 API>=11

    你也可以从xml设置

    android:rotation="90"
    

    【讨论】:

    • android:rotation="90" 只是旋转 ImageView。没有了。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 2011-06-04
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多