Можно ли замаскировать представление в андроиде?

Можно ли маскировать представления? Например, если у меня есть проект, который требует, чтобы вид списка был видимым в овальной форме. Есть ли способ создать маску для представления? Это называется чем-то еще? Поскольку все ссылки, которые я нахожу для маскирования в документах android, говорят о маскировке объекта canvas или drawable. Но я не думаю, что создание привлекательного интерактивного объекта, такого как List View, будет хорошим подходом. На данный момент это ограничение?

Solutions Collecting From Web of "Можно ли замаскировать представление в андроиде?"

Да, это – вы должны переопределить метод рисования вашего представления – то есть:

...... 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"/> 

Вы можете найти его здесь