2011-11-28 49 views
2

我想在我的应用程序中显示带渐变的启动画面。但是背景中渐变的质量非常糟糕。所以我创建了一个简单的辐射渐变来仔细观察。安卓渐变图形质量(缩放位图)

编辑:也许我应该提到我正在使用BitmapFactory.createScaledBitmap();和BitmapFactory.decodeStream()(图形是在资产的文件夹。)

那结果:

原* .JPG(质量100%) enter image description here

截图Xperia X10的(我把使用Eclipse进行截图) enter image description here

回答

0

为了缩放位图并保留ARGB_8888,我创建了一个新的位图,大小合适。然后我使用画布在drawBitmap的新位图上绘制内部位图。此方法允许我在绘制新位图之前缩放位图。

inputStream = assetManager.open(path); 
originalBitmap = BitmapFactory.decodeStream(inputStream, null, opts); 

Bitmap resizedBitmap = Bitmap.createBitmap(desiredX, desiredY, Config.ARGB_8888); 

Canvas canvas = new Canvas(resizedBitmap); 
canvas.drawBitmap(originalBitmap, null, new Rect(0, 0, desiredX, desiredY), null); 

inputStream.close(); 
return resizedBitmap; 
0

您可以在没有任何jpg文件的情况下使用,但使用shape drawable。创建矩形并为gradient标记提供必要的参数。

+0

谢谢,但位图更复杂。我刚刚上传了这个jpeg来举个简单的例子。 – Xazen

+1

然后你可以像Skype应用程序那样做 - 它们只是为不同的屏幕画出很多drawable。我可以说这是很好的解决方案,但它仍然有效:) – Jin35

+0

以这样的速度,我将需要很多drawables。我想要缩放的图像是用Photoshop为小游戏创建的背景。如果这只是一些很好的解决方案。但背景太复杂了。还有一些不是光芒四射的线性梯度。 – Xazen