View 上的 onDraw() 在布局后面绘制

发布于 2024-10-15 06:53:12 字数 270 浏览 3 评论 0原文

好的,事情就这样了。我想移动扩展图库类中的项目以更改图像的顺序。我现在这样做的方式:

  • 长按删除当前选定的项目,
  • 使用 onDraw() 绘制相同的图像,以便我可以使用 onTouchEvent() 移动它>
  • 在发布时再次添加该项目

这工作正常,但问题是,当使用 onDraw() 方法时,它将在图库项目后面绘制图像。有没有办法改变绘制内容的优先级?

Ok, here's the deal. I want to move items in my extended gallery class to change the order of images. The way i'm doing it now:

  • on long press remove the current selected item,
  • use onDraw() to draw the same image so i can move it around using onTouchEvent()
  • on release add the item again

This works fine but the problem is that when using the onDraw() method it will draw the image behind the gallery items. Is there a way to change the priority of what is drawn?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住我的手 2024-10-22 06:53:12

好吧,我在进入完全不同的方向后发现了这一点=/

这是具有相同问题的人的解决方案:

在构造函数(或初始化组件的其他任何地方)设置 setWillNotDraw(false) 并覆盖dispatchDraw()dispatchDraw() 绘制 ViewGroup 子级,因此您可以自己决定是否要在其他视图的后面或顶部绘制。

示例取自自定义绘图图库视图的顶部(及其子视图)

@Override
protected void dispatchDraw(Canvas canvas) {
    super.dispatchDraw(canvas);

    // do your drawing stuff here
    canvas.drawPath(mPath,mPaint);
}

Well i found this out after going into a totally different direction =/

Here's the solution for people that have the same problem:

In constructor (or anywhere else you initialize the component) set setWillNotDraw(false) and override dispatchDraw(). dispatchDraw() draws the ViewGroup children so you can decide yourself if you want to draw behind or a top of the other views.

Example taken from Custom drawing on top of Gallery view (and it's child views)

@Override
protected void dispatchDraw(Canvas canvas) {
    super.dispatchDraw(canvas);

    // do your drawing stuff here
    canvas.drawPath(mPath,mPaint);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文