是否可以在android中屏蔽View?

Pla*_*eon 20 android

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

ase*_*ovm 35

是的,它是 - 您必须覆盖视图的绘图方法 - 即:

......
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);
}
Run Code Online (Sandbox Code Playgroud)

这将仅在path设置的边界中绘制视图.

  • 此解决方案不适用于屏蔽动画视图 (5认同)

Chr*_*met 13

是的,你甚至可以掩盖完整的布局.无耻的自我插头

<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"/>
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到它