问题标签 [ondraw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
18186 浏览

android - Android自定义视图位图内存泄漏

我有一个自定义视图,我需要在其中绘制两个位图,一个是背景,代表地图的图像,一个是将在画布的顶部/左侧位置绘制的图钉。

两个图像都是在Draw 上绘制的,并且在包含视图的活动期间保持不变。过了一会儿,我得到一个

OutOfMemoryError:位图大小超出 VM 预算

这意味着我有泄漏并且位图没有被垃圾收集。我以前问过这个问题,但现在情况发生了一点变化。我创建了一个 init 方法,在其中设置了我想使用的位图,但这仍然不是一个好方法,稍后会出现错误,但仍然存在。

这是代码

我在包含视图的活动的 onCreate 上调用 setMapBitmap() 和 init()。在那里我知道什么位图将用作地图。我调用视图的destroy() 的活动的onPause。我仍然得到错误。我读过这个但我不知道如何适应我的情况

我对任何其他解决方案持开放态度。请注意,我需要调整地图位图的大小(基于 mai 活动中包含它的布局的高度)并且仍然能够在正确的位置绘制位置。

0 投票
2 回答
2111 浏览

android - Android - 在动态插入的自定义视图中未调用 onDraw

我有一个动态插入的自定义视图,并且onDraw没有被调用。我最初在没有动态插入的情况下制作了自定义视图,它工作正常,但是当将它移动到我的工作代码库时,我onDraw永远无法被调用,即使视图构造函数被调用并且onMeasure也被调用。我试过在这个地方到处打电话,但他们似乎并没有强迫视图绘制invalidate()postInvalidate()两个版本的视图层次结构看起来相同,我迷路了。

任何人都可以帮忙吗?

编辑:更多的测试表明onDraw在模拟器上被调用,而不是手机。在onSizeChanged手机上也有正确的值通过,但在模拟器上这些值都是 0。

编辑:我一直在玩它,但仍然无法到达任何地方,所以对它进行了赏金。如果您需要更多代码/xml/信息,请告诉我。

0 投票
1 回答
1064 浏览

android - View 的 onDraw 方法在 Android 2.2 上一次又一次地被调用

我是 Android 开发的新手,在尝试在视图上实现图形绘制时遇到了一个棘手的问题。

我想做的是在视图中绘制图表。我在 ScrollView 中放置了一个 View 并覆盖 View 的 onDraw 方法并在 onDraw 中进行绘图。最重要的是图表需要滚动功能。我覆盖的 View 的 onDraw 方法包括坐标计算和图表中许多必要的元素绘制(线、点、轴、标签等)。正如你可以想象的那样,我计算并绘制了整个图表,不仅是可见区域,而且包括屏幕外的整个区域。现在的问题是,当我滚动 ScrollView 时会一次又一次地调用 onDraw 方法,从而导致性能问题并且滚动视图运行非常缓慢。我试图找到一种方法来防止在第一次调用后调用 onDraw 但没有幸运。一旦 onDraw 被调用,我必须一次又一次地计算相同的东西,这是不必要的。

各位有什么答案吗?谢谢。

0 投票
4 回答
25546 浏览

android - 使用 Canvas.drawColor() 清除画布

我正在尝试成功更改自定义视图的背景图像。图像会改变,但问题是我仍然看到旧图像的痕迹。当我尝试在绘制新图像之前清除画布时,它似乎不起作用。我创建一个位图来存储图像。更改图像时,我在绘制新图像之前调用 Canvas.drawColor() 但旧图像仍然存在。我已经尝试过 drawColor(0)、drawColor(Color.BLACK)、c.drawColor(0, PorterDuff.Mode.CLEAR),但以上都不起作用。因此,我不得不发布这篇文章,以供比我更有经验的人评论。

实际代码如下:

0 投票
3 回答
2778 浏览

android - 使用自定义字体的自定义文本视图

我正在尝试实现一个使用我自己的自定义字体的自定义文本视图。

有没有办法在做 Super.onDraw() 之前设置字体?

以便将常用字体替换为我要使用的自定义字体。

就像是:

我知道上面的代码行不通。

还是我别无选择,只能使用 drawText() 这样做?

0 投票
2 回答
2593 浏览

android - 在 Android 中绘制 onClick

我正在尝试制作一个程序,使用来自 2 个 EditText 字段的用户输入值制作图表。程序应使用此输入从轴中心到信息指定的点绘制一条线。我有一个按钮,每次单击它时都应该在指定的点创建一条新线(所以可以有不止一条线)我创建了一个自定义视图来保存轴,但是显然它利用了它的 onDraw 方法,所以我也不能用它来画新线。

这是我的自定义视图的代码:

0 投票
1 回答
166 浏览

android - 跨班级共享画布?

我正在为 android 编写一个应用程序,并且我有一个扩展 View 的类设置。在那个类里面我覆盖了onDraw。

我有另一堂课,我正在做很多处理。我想知道是否有一种方法可以在第二类中使用 onDraw 方法?第二类没有扩展任何东西。

0 投票
1 回答
5223 浏览

android - onDraw() on View 在布局后面绘制

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

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

这很好用,但问题是当使用该onDraw()方法时,它会在画廊项目后面绘制图像。有没有办法改变绘制的优先级?

0 投票
0 回答
679 浏览

android - Problems with getSelectedItem() in extended gallery

I'm having weird issues calling getSelectedItem() in my onDraw() function in my extended Gallery class. For some reason it gives me an Integer back when i'm expecting my own object. When i debug and look in the adapter it shows that it's filled with my objects. Any idea why it isn't returning what i expect?

Edit : It looks like it's returning the index.

Edit : Go figure, bad code on my part. In my adapter i did the following:

0 投票
2 回答
2752 浏览

android - onDraw 使用 canvas.drawLine 创建填充形状

我画了 4 条线(canvas.drawLine)来画一个矩形。有没有可能填充矩形的区域?(我知道android有一个rectDraw。我的只是好奇)

提前致谢。


好的..我还创建了一个路径段。按照代码..请你解释一下如何填充内部区域?