Java 创建的位图是否已缩放,尽管原始位图已从未缩放中剪切?
下面是我用来将精灵(位图变量)切割成几个帧的代码:Java 创建的位图是否已缩放,尽管原始位图已从未缩放中剪切?,java,android,Java,Android,下面是我用来将精灵(位图变量)切割成几个帧的代码: public void drawFrame(Canvas canvas, int frameIndex, int x, int y){ int nbFramePerRow = data.getWidth() / frameWidth; int sourceFrameY = frameIndex / nbFramePerRow; int sourceFrameX = frameIndex - (sourceFrameY
public void drawFrame(Canvas canvas, int frameIndex, int x, int y){
int nbFramePerRow = data.getWidth() / frameWidth;
int sourceFrameY = frameIndex / nbFramePerRow;
int sourceFrameX = frameIndex - (sourceFrameY * nbFramePerRow);
sourceFrameX *= frameWidth;
sourceFrameY *= frameWidth;
int sourceFrameX2 = sourceFrameX + frameWidth;
int sourceFrameY2 = sourceFrameY + frameHeight;
int x2 = x + frameWidth;
int y2 = y + frameHeight;
Rect src = new Rect(sourceFrameX, sourceFrameY, sourceFrameX2, sourceFrameY2);
Rect dst = new Rect(x, y, x2, y2);
canvas.drawBitmap(data, src, dst, paint);
}
当我把我的图像放在drawable中时,两者(原始图像和剪切图像)都没有缩放。
当我把它放在无dpi fodler中时,它们都是缩放的(这很奇怪,应该是相反的…)
问题:看起来未缩放和缩放剪切图像的像素不同,但帧本身的大小对于这两种图像都保持相同。
这导致在未缩放的情况下,只能看到我想要显示的内容的一部分我希望像原图一样显示未缩放的剪切图像。在:
drawable-nodpi
图像没有缩放。如果将它们放置在任何其他文件夹中,它们将被视为针对给定密度制作的,并将缩放以适合其他密度
请注意,如果您使用Android Studio并使用Android视图,则所有可绘制内容都将显示为可绘制,并且看起来像
|
|- Drawable
|-- someimage.png (mdpi)
|-- someimageother.png(idpi)
|-- somethirdimage.png
如果它在另一个可绘制文件夹中之后显示一个给定文件夹
那么,您是否检查过它是否确实位于可绘制的
文件夹中,而不是其他文件夹中?切换到project
视图进行检查,或在可绘制名称后进行检查。您还可以在文件浏览器中为您正在使用的任何操作系统打开它,并进行类似的检查
如果缩放意味着图像随着密度的增加而变小/变大,则在大小相同时,这是预期的。假设您有一个256x256图像,它在低密度时看起来更大,在高密度时看起来更小可以缩放位图。这样做是为了避免在加载大量大型图片时,在具有小RAM的设备上发生内存泄漏。您只需使用
Resources#getDisplayMetrics()#density
这些数值是:
0.75-ldpi
1.0-mdpi
1.5-hdpi
2.0-xhdpi
3.0-xxhdpi
4.0-xxxhdpi
然后,您只需将缩放应用到动画帧大小计算中您的图像是否在文件夹
res/drawable nodpi
中?如果没有,把它放在那里…你有没有试着把它们放在res/raw
?\@Shark当我这样做时,图像被完全显示,但它被缩放了。我更新了帖子。我在drawable中做了一个更清楚的解释(我尝试了ha-ha),我的图像显示为非缩放,无法告诉你原因。如果它在drawable NodePI中,你告诉系统它不是为特定密度设计的,并且在所有密度上都应该具有相同的大小。可能我的安装已损坏,我不知道。当我将文件放入drawable时,它们不会缩放。我能告诉你什么>所以你想缩放它们吗?不,我不想我的帧被缩放(像原始帧一样),当我绘制图像时,我阻止它们被缩放。但当我画从原作上剪下来的图像时,它不起作用。我不希望切割的也被缩放。