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

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

  ask by Christina kriz translate from so

本文未有回复,本站智能推荐:

1回复

invalidate()不会刷新视图

我为此苦苦了一段时间,不确定是因为Android DEV缺席了将近2年还是我的愚蠢,我已经尝试了所有方法,即使invalidate()发生了,也无法重绘屏幕。 这是一些代码: GameActivity.java CanvasActivity.java movePlayer 因此
1回复

如何从另一个类调用invalidate()方法?

我试图在我的Android应用程序的自定义视图中实现捏缩放功能。 我使用以下课程来做到这一点。 我想在onScale像上面那样调用invalidate()方法,但这是错误的,因为这在我的自定义视图之外。 但是,我尝试通过在此处实例化自定义视图来做到这一点。 但这也返回一个错误。 无
1回复

OnDraw()仅在循环后调用一次

我有一个要在android studio中编写的程序,该程序应该播放音符,并根据坐标,音符名称和播放音符的时间的数组列表使圆圈扩大。 但是,我遇到的问题是所有音符都能正确播放,但是只有最后一个圆圈被绘制 ,并且在退出循环后才播放所有音符 。 我之前setWillNotDraw(false);
2回复

Invalidate()不刷新屏幕

我要制作它,以便按屏幕可以移动我的矩形。 侦听器将输出提供给控制台,但不会使屏幕无效。
1回复

无法使用invalidate()重绘我的画布位图;

我的游戏需要帮助! 我正在用位图绘制播放器模型,我想通过ontouch事件更改模型,但是它不起作用,我不知道我在做什么错:(首先,这是我的播放器类, m创建位图: 这是我在游戏面板中调用位图的代码(我只为您提供此问题所需的部分): 我只想通过onTouch事件更改播放器的图像,但它不起
2回复

可以在invalidate(Rect)之后立即执行onDraw()吗?

我在onDraw()方法中添加了一个断点,并注意到我的调试器仅在invalidate(rect)所在的方法结束后才到达那里。 可以马上叫吗? 因为我需要在我的方法中两次调用invalidate(rect)。 提前致谢。
1回复

是否应在invalidate(l,t,r,b)之后显式设置剪辑区域?

那里的文档似乎表明,如果您使View多个区域无效(使用invalidate(l,t,r,b) ),则无需在onDraw()方法中使用clip region指定这些区域。 另一方面,我看到了许多自定义视图的示例,这些视图在保持脏区并行的同时使该区域无效,然后使用该脏区在onDraw()方法中裁
4回复

为什么在invalidate之后直接调用requestLayout

我正在学习自定义视图,并想了解invalidate()和requestLayout() 。 请参考这个答案及其图表: https://stackoverflow.com/a/25846243/4243687 invalidate()告诉Android视图状态已更改,需要重新绘制。