Intereting Posts
Прокрутка текста над кнопками, кнопки в нижней части Убейте все действия, когда нажата клавиша HOME нажата андроид Таблица с переменной шириной столбца для строки (аналогично UICollectionView для iOS) Как изменить стиль выбора номера в андроиде? Как добавить другой фрагмент в существующий фрагмент? Внутренняя тень на круге Android Canvas Прочтите файл системы Android Android NDK: как получить динамическую архитектуру компилятора в Android.mk Папка значений для dimen.xml для небольшого размера экрана Безопасный способ шифрования / дешифрования Общие предпочтения в Android Android: загрузка изображения из Интернета с помощью Asynctask Воспроизведение / Пауза YoutubePlayer программно после возобновления работы с фона Найти местоположение звонящего во время разговора по телефону с помощью Android Соединение TLS с использованием SSLSocket медленнее в ОС Android Как blit () в android?

Могу ли я рисовать за пределами холста 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); 

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