是否可以在android中屏蔽View?

时间:2011-09-26 17:57:40

标签: android

是否可以屏蔽视图?例如,如果我有一个设计,要求列表视图在椭圆形开口内可见。有没有办法为视图创建蒙版?它被称为其他东西吗?因为我发现在android文档中屏蔽的所有引用都在谈论屏蔽画布对象或drawable。但我认为制作一个像列表View这样的交互式对象是一种很好的方法。这只是现在处理的限制吗?

2 个答案:

答案 0 :(得分:34)

是的,它是 - 你必须覆盖你的观点的绘图方法 - 即:

......
final Path path = new Path();
path.addRoundRect(new RectF(0,0,getWidth(),getHeight()),10,10,Direction.CW);
......
@Override
protected void dispatchDraw(Canvas canvas){
    canvas.clipPath(path);
    super.dispatchDraw(canvas);
}

这将仅在路径设置的边界中绘制视图。

答案 1 :(得分:12)

是的,您甚至可以屏蔽完整的布局。 无耻的自我插件

<com.christophesmet.android.views.maskableframelayout.MaskableFrameLayout
android:id="@+id/frm_mask_animated"
android:layout_width="100dp"
app:porterduffxfermode="DST_IN"
app:mask="@drawable/animation_mask"
android:layout_height="100dp">

<ImageView android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:scaleType="centerCrop"
           android:src="@drawable/unicorn"/>

你可以找到它here