我正在尝试在我的应用中将{.PNG文件设置为Canvas
的背景。我已经制作了一个480 x 800的图像并使用了这种方法:
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.image_1), 0, 0, null);
我已经启动了一个模拟器(WVGA800),但我的图像看起来比设备的屏幕更大。
如何调整此图像的大小,或者我应该使用哪种方法来使图像匹配良好。
其次,对于具有不同屏幕分辨率的设备,有没有办法让这样的背景通用?
提前谢谢。
答案 0 :(得分:3)
试试这个...
设置位图
Bitmap mFinalbitmap= BitmapFactory.decodeResource(getResources(), R.drawable.image_1);
根据宽度和高度调整位图大小
mFinalbitmap= resizeImage(mFinalbitmap, width ,height);
设置位图画布
canvas.drawBitmap(mFinalbitmap, 0, 0, null);
调整大小功能:按照维护图像的x和y
public Bitmap resizeImage(Bitmap image,int maxWidth, int maxHeight)
{
Bitmap resizedImage = null;
try {
int imageHeight = image.getHeight();
if (imageHeight > maxHeight)
imageHeight = maxHeight;
int imageWidth = (imageHeight * image.getWidth())
/ image.getHeight();
if (imageWidth > maxWidth) {
imageWidth = maxWidth;
imageHeight = (imageWidth * image.getHeight())
/ image.getWidth();
}
if (imageHeight > maxHeight)
imageHeight = maxHeight;
if (imageWidth > maxWidth)
imageWidth = maxWidth;
resizedImage = Bitmap.createScaledBitmap(image, imageWidth,
imageHeight, true);
} catch (OutOfMemoryError e) {
e.printStackTrace();
}catch(NullPointerException e)
{
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return resizedImage;
}
答案 1 :(得分:0)
即使你把它放在drawable-hdpi文件夹上,它也适用于WVGA800,但它可能在其他具有不同分辨率和宽高比的设备上显示效果不佳。
您需要处理缩放和保持宽高比(如果您愿意)。否则,您将在其他设备上遇到同样的问题。
答案 2 :(得分:0)
最简单的方法: 在你的类中声明静态Bitmap:
Bitmap bitmap;
设置调整大小的位图,例如,您希望将调整大小的位图调整为100x100:
private void initBitmap(){
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.Your_bitmap);
bitmap = Bitmap.createScaledBitmap(bitmap, 100,100,true);
}
并在构造函数中调用方法