android centerCrop用于更大的屏幕,其中ImageView宽度与父级匹配

时间:2014-05-19 21:53:17

标签: android android-imageview aspect-ratio scaletype

我在我的应用中使用android:scaleType="centerCrop",以便在我的ImageView中以统一和缩放的方式显示未知宽高比和分辨率的图像。

centerCrop算法在图像视图边界之外从视图中心缩放图像。

手机处于纵向模式时,这很棒。手机外形宽高比是centerCrop的理想选择。但是在横向模式和更大的屏幕中,centerCrop通常不会粘附到图像组成方式的安全区域。受试者头部通常被切断

是否有一个额外的scaleType我可以用来动态地解释这个问题,即使我开始检测分辨率并为它们制作替代布局,是什么替代了centerCrop?保持同样的缩放,但不会失去主题的重点

1 个答案:

答案 0 :(得分:0)

您可以提供自己的矩阵并根据需要进行缩放,以便指定所需的中心。

将比例类型设置为矩阵,然后使用setImageMatrix

imageView.setScaleType(ScaleType.MATRIX);
Matrix m = new Matrix();
float scale = 2;
m.setScale(scale, scale, 50, 100); //scale by 2x around the point 50, 100
imageView.setImageMatrix(m);

缺点是你需要做数学计算出正确的比例,以便在从那一点开始缩放时适合。保持与上面的X和Y相同,它将保持纵横比。

您可以从处理CENTER http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ImageView.java的ImageView代码开始,然后只需修改枢轴点即可。