Добавить стикер только один раз, используя invalidate () - PullRequest
1 голос
/ 21 февраля 2020

При нажатии на 2-ю наклейку должна отображаться только вторая наклейка (первая должна быть удалена). текущий вывод при нажатии на наклейку 1 (желтая), на экране отображается наклейка 1, а при нажатии на наклейку 2 (красная) предыдущая наклейка остается на экране (чего я не хочу). На выходе должна быть только наклейка 2 попытался реализовать для l oop, но это не работает. Исходный код полной активности Figure 1 is the current output,fig 2 and 3 are expected output for 1st and 2nd clicks respectively

public void addSticker(final Sticker sticker) {
  if (sticker == null) {
     Log.e(TAG, "Sticker to be added is null!");
     return;
   }

    float offsetX = (getWidth() - sticker.getWidth());
    float offsetY = (getHeight() - sticker.getHeight());
    sticker.getMatrix().postTranslate(offsetX, offsetY);
    float scaleFactor;
    if (getWidth() < getHeight()) {
         scaleFactor = (float) getWidth() / sticker.getDrawable().getIntrinsicWidth();
    } 
    else {
          scaleFactor = (float) getHeight() / sticker.getDrawable().getIntrinsicHeight();
      }
    sticker.getMatrix().postScale(scaleFactor, scaleFactor, getWidth(), getHeight());

    mHandlingSticker = sticker;
    mStickers.add(sticker);
    invalidate();
}
...