Я не смог сделать это, сгенерировав произвольную фигуру в коде. Я должен был сделать это, создав собственный 9-Patch png файл. Вот последняя тема, которую я создал:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.TranslucentDialog">
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorForeground">#ffffff</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
<item name="android:windowBackground">@drawable/notification_panel</item>
</style>
</resources>
Обратите внимание на строку:
<item name="android:windowBackground">@drawable/notification_panel</item>
Это строка, которая устанавливает фон действия для изображения 9-Patch, которое я создал. Это изображение может быть чем угодно, изображением, 9-патчем или произвольной формой. Я использовал 9-патч, чтобы у меня была хорошая граница и закругленные углы, при этом оставалось очень полупрозрачное окно активности (показывая все за ним, но оставляя приятный оттенок серого в том месте, где находится окно активности).
Файл 9-patch messages_panel.9.png находится в моей папке для рисования. Сначала я немного испугался, создав собственный образ из 9 патчей, но оказалось, что с помощью Inkscape и утилиты android draw9patch.bat я смог сделать это с удовлетворительными результатами.
Дайте мне знать, если у кого-то возникнут вопросы.