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