以下代码定义了我的位图:
Resources res = context.getResources();
mBackground = BitmapFactory.decodeResource(res,
R.drawable.bg2);
//scale bitmap
int h = 800; // height in pixels
int w = 480; // width in pixels
Bitmap scaled = Bitmap.createScaledBitmap(mBackground, w, h, true); // Make sure w and h are in the correct order
Run Code Online (Sandbox Code Playgroud)
...以下代码用于执行/绘制它(未缩放的位图):
c.drawBitmap(mBackground, 0, 0, null);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何设置它来绘制以"Bitmap scaled"形式返回的缩放位图,而不是原始?
epi*_*rns 33
定义一个新的类成员变量:
Bitmap mScaledBackground;
然后,将新创建的缩放位图分配给它:
mScaledBackground = scaled;
然后,调用draw方法:
c.drawBitmap(mScaledBackground, 0, 0, null);
请注意,以您在上面的代码段中的方式硬编码屏幕大小并不是一个好主意.更好的方法是以下列方式获取设备屏幕大小:
int width = getWindowManager().getDefaultDisplay().getWidth();
int height = getWindowManager().getDefaultDisplay().getHeight();
Run Code Online (Sandbox Code Playgroud)
最好不要为了以缩放方式绘制原始背景的唯一目的而声明新的位图.位图消耗了大量宝贵资源,通常手机仅限于几兆位的位图,您可以在应用程序失败之前加载这些位图.相反,你可以做这样的事情:
Rect src = new Rect(0,0,bitmap.getWidth()-1, bitmap.getHeight()-1);
Rect dest = new Rect(0,0,width-1, height-1);
c.drawBitmap(mBackground, src, dest, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28073 次 |
| 最近记录: |