Intereting Posts
Отсутствует google-play-services_lib в разделе <sdk> / extras / google / google_play_services / libproject / Android – Как показать вертикальную линию на фоне ListView (и в соответствии с высотой строки)? Click не работает в Listitem Listview android Проблема с webview и scrollview Настройте IntelliJ IDEA таким образом, чтобы источник был обнаружен в git, но обнаружен незарегистрированный корень Vcs Как сделать 10-дюймовый планшетный компьютер совместимым с 7-дюймовым планшетом в Android Как сделать вызовы JNI из Сервиса, даже если приложение закрыто? Android 6 – Запись на внешнее хранилище не срабатывает ТОЛЬКО ТОЛЬКО ПЕРВЫЙ Изменения в коде не отражаются, когда я запускаю проект Libgdx на Android Изменение языка строк в действии Android Android Исходящий идентификатор вызывающего абонента – включение / выключение Поддержка Android BottomSheetBehavior дополнительное фиксированное состояние Установить размер многослойного чертежа? Android SQL – проверьте, существует ли целая строка в базе данных Заполнение JSON по этой ссылке на android Listview

Могу ли я рисовать за пределами холста Android

Я переношу приложение, написанное в графической среде, которое позволяет рисовать, происходящее вне границ отсекающего прямоугольника. Любой способ сделать это в Android?

Чтобы рисовать за пределами границ, вам нужно развернуть clipRect холста.

Проверьте перегруженные методы clipRect в классе Canvas.

Примечание. Вам нужно будет указать операцию Region, потому что операция по умолчанию – INTERSECT. Так что-то вроде этого:

Rect newRect = canvas.getClipBounds(); newRect.inset(-5, -5) //make the rect larger canvas.clipRect (newRect, Region.Op.REPLACE); //happily draw outside the bound now 

Попробуйте установить

 android:clipChildren="false" 

К родительскому виду

Вы можете рисовать, где хотите, но ничего не будет сохранено за пределами отсекающего прямоугольника.

Ответ @numan дал почти нормально, проблема в распределении памяти с этим подходом, поэтому мы должны делать это, вместо этого:

 // in constructor/elsewhere Rect newRect = new Rect(); // in onDraw canvas.getClipBounds(newRect); newRect.inset(0, -20); //make the rect larger canvas.clipRect(newRect, Region.Op.REPLACE); 

Это решает проблему 🙂