是否可以遮盖视图?例如,如果我的设计需要在椭圆形开口处可见一个列表视图。有没有办法为视图创建一个蒙版?它被称为其他什么吗?因为在Android文档中找到的所有关于遮罩的引用都是在讨论如何遮罩画布对象或可绘制对象。但我认为将交互对象(如列表视图)制作成可绘制对象并不是一种好方法。这只是目前需要处理的限制吗?
是否可以遮盖视图?例如,如果我的设计需要在椭圆形开口处可见一个列表视图。有没有办法为视图创建一个蒙版?它被称为其他什么吗?因为在Android文档中找到的所有关于遮罩的引用都是在讨论如何遮罩画布对象或可绘制对象。但我认为将交互对象(如列表视图)制作成可绘制对象并不是一种好方法。这只是目前需要处理的限制吗?
是的,你可以 - 你需要覆盖你的视图的绘制方法 - 例如:
......
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);
}
这将只在路径设置的边界内绘制您的视图。
是的,你甚至可以遮盖完整的布局。 无耻的自我宣传。
<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"/>
你可以在这里找到它。
onDraw
方法来解决此问题。 - asenovm