以下の結果の正しいスケーリング方法を考え出す必要があります。
ImageView は次のようにスケーリングする必要があります。
- X 軸を埋める
- アスペクト比を維持
- ImageView を 0,0 に配置
- 残りを下部でトリミングします。
私は多くのMatrix
タイプを試しましたが、これまでのところ結果を得ることができませんでした.
以下の結果の正しいスケーリング方法を考え出す必要があります。
ImageView は次のようにスケーリングする必要があります。
私は多くのMatrix
タイプを試しましたが、これまでのところ結果を得ることができませんでした.
私は同じ問題を抱えています。私の解決策は次のとおりです。
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Matrix matrix = new Matrix();
float imageWidth = image_original_width * display.density, imageHeight = image_original_height * display.density;
float placeWidth = imageView.getWidth(), placeHeight = imageView.getHeight();
float scaleToWidth = placeWidth / imageWidth;
float scaledImageHeight = imageHeight * scaleToWidth;
matrix.setScale(scaleToWidth, scaleToWidth);
if (placeHeight > scaledImageHeight) {
// there is maintain place bottom of image: center to vertical
matrix.postTranslate(0, (placeHeight - scaledImageHeight) / 2);
} else {
// the bottom of image is already cropped
}
imageView.setImageMatrix(matrix);
imageView.getWidth() は OnCreate メソッドで正しい値を取得しないため、ViewTreeObserver または正確なサイズを使用する必要があります。