首页 > 解决方案 > 使用 invalidate() 只添加一次贴纸

问题描述

单击第二个标签时,它应该单独显示第二个标签(第一个应该被删除)。点击贴纸1(黄色)时的当前输出,它在屏幕上显示贴纸1,当点击贴纸2(红色)时,前一个贴纸仍在屏幕上(我不想要)输出必须是贴纸2我有尝试实现一个 for 循环,但它不起作用。 完整的活动源代码 图 1 是当前输出,图 2 和 3 分别是第 1 次和第 2 次点击的预期输出

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();
}

标签: javaandroidandroid-studioinvalidationandroid-view-invalidate

解决方案


推荐阅读