各位大侠:本人正在做一小软件,从网上下载图片,然后根据屏幕大小将图片等比缩放,缩放的结果是或者宽满,或者是高满,现在在800*480的屏幕下图片的宽已经放大到480了,为什么显示的图片没有宽满呢。四周都有黑边,在480*320的屏下就没问题,网上说是大屏的支持问题,我已经加了<uses-sdk android:minSdkVersion="9" /><supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"
/> ,还是不起作用,要是把android:anyDensity="true"改成android:anyDensity="false",屏幕的宽就变成533了,这样是达到了效果,软件就不支持多种不同密度了,如何在android:anyDensity="true"下,达到效果呢。 图片缩放代码如下: //重绘图片
private Bitmap reDrawBitMap(Bitmap bitmap){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int rHeight=dm.heightPixels;
int rWidth=dm.widthPixels;
// float rHeight=dm.heightPixels/dm.density+0.5f;
// float rWidth=dm.widthPixels/dm.density+0.5f;
// int height=bitmap.getScaledHeight(dm);
// int width = bitmap.getScaledWidth(dm);
int height=bitmap.getHeight();
int width = bitmap.getWidth();
float zoomScale;
if(rWidth/rHeight>width/height){//以高为准
zoomScale=((float) rHeight) / height;
}else{ //if(rWidth/rHeight<width/height)//以宽为准
zoomScale=((float) rWidth) / width;
}
// 创建操作图片用的matrix对象
Matrix matrix = new Matrix();
// 缩放图片动作
matrix.postScale(zoomScale, zoomScale);
Log.d(TAG,"^^^^^^^^^^^^^^^^^^^^ : " + zoomScale);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizedBitmap;
}
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"
/> ,还是不起作用,要是把android:anyDensity="true"改成android:anyDensity="false",屏幕的宽就变成533了,这样是达到了效果,软件就不支持多种不同密度了,如何在android:anyDensity="true"下,达到效果呢。 图片缩放代码如下: //重绘图片
private Bitmap reDrawBitMap(Bitmap bitmap){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int rHeight=dm.heightPixels;
int rWidth=dm.widthPixels;
// float rHeight=dm.heightPixels/dm.density+0.5f;
// float rWidth=dm.widthPixels/dm.density+0.5f;
// int height=bitmap.getScaledHeight(dm);
// int width = bitmap.getScaledWidth(dm);
int height=bitmap.getHeight();
int width = bitmap.getWidth();
float zoomScale;
if(rWidth/rHeight>width/height){//以高为准
zoomScale=((float) rHeight) / height;
}else{ //if(rWidth/rHeight<width/height)//以宽为准
zoomScale=((float) rWidth) / width;
}
// 创建操作图片用的matrix对象
Matrix matrix = new Matrix();
// 缩放图片动作
matrix.postScale(zoomScale, zoomScale);
Log.d(TAG,"^^^^^^^^^^^^^^^^^^^^ : " + zoomScale);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizedBitmap;
}
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
打印看看
宽度是480 还是320533 这个不是宽度 肯定是高度
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"
/>