Я новичок в разработке Android и сталкиваюсь с жесткой проблемой при попытке реализовать графический чертеж на представлении.
Что я хочу сделать, так это рисовать диаграмму в представлении. Я помещаю View в ScrollView и переопределяю метод onDraw View и делаю рисование на onDraw. Самое главное, что диаграмме нужны функции прокрутки. Метод переопределения я вида onDraw включает в себя расчет координат и рисование многих необходимых элементов (строка, точка, ось, метка и т.д.) В диаграмме. Как вы можете себе представить, я вычисляю и рисую весь график не только видимой областью, но и всей областью, в том числе за кадром. Теперь проблема заключается в том, что метод onDraw вызывается снова и снова при прокрутке ScrollView, так что это вызывает проблемы с производительностью, а представление прокрутки работает очень медленно. Я пытался найти способ предотвратить вызов onDraw после первого звонка, но не повезло. Я должен рассчитать одно и то же снова и снова, как только onDraw получит вызов, который не нужен.
Есть ли у вас ответ? Спасибо.
Вы можете использовать mScrollX и mScrollY для вычисления видимой части холста, которую нужно повторно рисовать.
/**
* The offset, in pixels, by which the content of this view is scrolled
* vertically.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mScrollY;
/**
* The left padding in pixels, that is the distance in pixels between the
* left edge of this view and the left edge of its content.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mPaddingLeft;
/**
* The right padding in pixels, that is the distance in pixels between the
* right edge of this view and the right edge of its content.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mPaddingRight;
/**
* The top padding in pixels, that is the distance in pixels between the
* top edge of this view and the top edge of its content.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mPaddingTop;
/**
* The bottom padding in pixels, that is the distance in pixels between the
* bottom edge of this view and the bottom edge of its content.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mPaddingBottom;