在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。
如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?
我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?
在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。
如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?
我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?
当前回答
我有一个算法缩放位图,以最适合容器的尺寸,保持其纵横比。请在这里找到我的解决方案
希望这能帮助到路上的人!
其他回答
如果图像质量在以下情况下下降: 使用
android:adjustViewBounds="true"
而不是
android:adjustViewBounds="true"
android:scaleType="fitXY"
这招对我很管用:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="39dip"
android:scaleType="centerCrop"
android:adjustViewBounds ="true"
给其他有这种问题的人。你有一个ImageView,你想要它的宽度为fill_parent,高度按比例缩放:
添加这两个属性到你的ImageView:
android:adjustViewBounds="true"
android:scaleType="centerCrop"
并设置ImageView的宽度为fill_parent,高度为wrap_content。
另外,如果你不想让你的图像被裁剪,试试这个:
android:adjustViewBounds="true"
android:layout_centerInParent="true"
你可以计算屏幕宽度。你可以缩放位图。
public static float getScreenWidth(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float pxWidth = outMetrics.widthPixels;
return pxWidth;
}
计算屏幕宽度和按屏幕宽度缩放的图像高度。
float screenWidth=getScreenWidth(act)
float newHeight = screenWidth;
if (bitmap.getWidth() != 0 && bitmap.getHeight() != 0) {
newHeight = (screenWidth * bitmap.getHeight()) / bitmap.getWidth();
}
之后就可以缩放位图了。
Bitmap scaledBitmap=Bitmap.createScaledBitmap(bitmap, (int) screenWidth, (int) newHeight, true);
对于你们中的任何人,想要图像精确地适应imageview适当缩放,不裁剪使用
imageView.setScaleType(ScaleType.FIT_XY);
imageView是代表你的imageView的视图