Получение границ при рисовании на холсте в android

1

Я рисую Drawable для пользовательского представления в android.

Когда отображается пользовательское представление, родительский элемент является ScrollView. Когда scrollview перемещает Drawables сжимаются до тех пор, пока они не выйдут из экрана, а затем увеличатся, когда вы прокрутите назад до пользовательского виджета, даже если он явно установлен на квадрат 219dip.

Причина заключается в том, как я получаю оценки в методе onDraw (Canvas canvas)

    int mRight;
    int mLeft;
    int mBottom;
    int mTop;

    mRight = canvas.getClipBounds().right; 
    mLeft = canvas.getClipBounds().left;
    mBottom = canvas.getClipBounds().bottom;
    mTop = canvas.getClipBounds().top;

    int availableWidth = mRight - mLeft;
    int availableHeight = mBottom - mTop;

Кажется, что ClipBound изменяется, чтобы отобразить, какая часть экрана видна на экране. Поэтому измените размер Drawables до тех пор, пока он не станет очень маленьким и не погаснет экран.

Я попытался заменить код выше этим

    int availableWidth = canvas.getWidth();
    int availableHeight = canvas.getHeight();

Теперь ничего не отображается на экране? не должно ли это работать?

  • 0
    Удачи в работе?
  • 0
    да, я думал, что отправил правильный ответ, я сделаю это сейчас!
Теги:

2 ответа

4

При рисовании моего пользовательского Drawable я использую:

float w = this.getBounds().width();
float h = this.getBounds().height();

чтобы получить граничную область моего Drawable в методе draw(Canvas canvas). Я не пробовал это в ScrollView, но я бы подумал, что границы Drawable должны работать одинаково в любом случае.

Надеюсь, что это поможет.

  • 0
    Я попробую, когда вернусь домой сегодня вечером, спасибо за внимание.
3

Это работает для моего пользовательского представления, этот код используется в методе onDraw (Canvas canvas).

    mRight = this.getRight();
    mLeft = this.getLeft();
    mBottom = this.getBottom();
    mTop = this.getTop();

    int availableWidth = mRight - mLeft;
    int availableHeight = mBottom - mTop;

предыдущий ответ был неправильным, у представления нет метода getBounds()

  • 2
    В своем ответе я заявляю, что мой - это пользовательский Drawable, а не представление. Вот почему это отличается ... та же идея, хотя. Рад, что вы получили это.
  • 1
    Я думаю, что вы можете просто использовать getWidth() и getHeight() вместо того, чтобы вычислять их самостоятельно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню