ImageView幅の高さと画像
2187 ワード
これはよく使われるテクニックで、画像の大きさが分からないことが多いが、きれいにするために画像の幅を固定し、高さを画像の大きさに合わせて幅などの割合で拡大・縮小することで、すべての画像が幅一致を維持し、画像が正常に表示される.
ImageViewに対してこの2つの属性を設定すればよい
ついでにこの2つの属性を記録して、まずadjustViewBoundsです
値がtrueの場合:Adjust the ImageView’s bounds to preserve the aspect ration of its drawable(ImageViewの境界を調整して画像のアスペクト比を一定に保つ)は、このImageViewのscaleTypeをfitCenterに設定します.ただし、このfitCenterは、後で定義するscaleType属性によって上書きされる(定義されている場合).設定したlayout_widthとlayout_heightがすべて定値である場合、adjustViewBoundsの設定は効果的ではなく、ImageViewは常に設定された定値の幅の高さになります.2.layout_を設定した場合widthとlayout_heightはすべてwrap_Contentでは、ImageViewは常に画像と同じアスペクト比を持つため、adjustViewを設定することは意味がありません(ただし、同じアスペクト値ではなく、通常は拡大されます).3.どちらかが定値(またはmaxWidth、MaxHeightのどちらかが定値(検証対象)である場合)、どちらかがwrap_content、例えばlayout_width=“100px”,layout_Height="wrap_content"の場合、ImageViewの幅は常に100 pxであり、高い場合は(1)ピクチャの幅が100 px未満の場合、layout_heightは画像の高さと同じです.すなわち、画像はスケールされず、ImageViewに完全に表示されます.ImageViewの高さは画像の実際の高さと同じです.画像はImageViewを満たしておらず、ImageViewには空白があります.(2)ピクチャの幅が100 px以上である場合、ImageViewはピクチャと同じ幅比を持つため、ImageViewのlayout_height値は、画像のアスペクト比を100で割った値です.例えば画像が500 X 500ならlayout_heightは100です.画像はアスペクト比ズームを維持し、ImageViewに完全に表示され、ImageViewが完全に満たされます.
そしてscaleType
1.android:scaleType="center"は原図の大きさのままImageViewの中心に表示されます.原図のsizeがImageViewのsizeより大きい場合、多く出た部分が切り取られます.2.android:scaleType="center_inside"は、原図が正常に表示されることを目的としており、原図の大きさがImageViewのsizeより大きい場合は、原図の幅を比例して縮小し、中央にImageViewに表示される.原図sizeがImageViewのsizeより小さい場合は、中央表示ピクチャの処理は行われません.3.android:scaleType="center_crop"は、元の図でImageViewを満たすことを目的とし、元の図sizeがImageViewのsizeより大きい場合はcenter_Inside同様に、スケールで縮小し、ImageViewに中央に表示します.原図sizeがImageViewのsizeより小さい場合は、原図の幅と高さを比例して引き上げ、ImageViewの中央に表示されます.4.android:scaleType=「matrix」原図の大きさを変えず、ImageViewの左上から描き始め、超えた部分を切り取り処理します.5.android:scaleType="fit_xy"画像を指定の大きさでImageViewに表示し、表示画像を伸ばし、元の割合を保つことなくImageViewを満たす.6.android:scaleType=「fit_start」原図をImageViewの高さまで拡大縮小し、ImageViewのstart(前部/上部)に表示します.7.android:sacleType=「fit_center」原図をImageViewの高さまで拡大縮小し、ImageViewのcenter(中央/中央)に表示する.8.android:scaleType=「fit_end」原図をImageViewの高さまで拡大縮小し、ImageViewのend(後部/尾部/底部)に表示する
android:adjustViewBounds="true"
android:scaleType="centerCrop"
ImageViewに対してこの2つの属性を設定すればよい
ついでにこの2つの属性を記録して、まずadjustViewBoundsです
値がtrueの場合:Adjust the ImageView’s bounds to preserve the aspect ration of its drawable(ImageViewの境界を調整して画像のアスペクト比を一定に保つ)は、このImageViewのscaleTypeをfitCenterに設定します.ただし、このfitCenterは、後で定義するscaleType属性によって上書きされる(定義されている場合).設定したlayout_widthとlayout_heightがすべて定値である場合、adjustViewBoundsの設定は効果的ではなく、ImageViewは常に設定された定値の幅の高さになります.2.layout_を設定した場合widthとlayout_heightはすべてwrap_Contentでは、ImageViewは常に画像と同じアスペクト比を持つため、adjustViewを設定することは意味がありません(ただし、同じアスペクト値ではなく、通常は拡大されます).3.どちらかが定値(またはmaxWidth、MaxHeightのどちらかが定値(検証対象)である場合)、どちらかがwrap_content、例えばlayout_width=“100px”,layout_Height="wrap_content"の場合、ImageViewの幅は常に100 pxであり、高い場合は(1)ピクチャの幅が100 px未満の場合、layout_heightは画像の高さと同じです.すなわち、画像はスケールされず、ImageViewに完全に表示されます.ImageViewの高さは画像の実際の高さと同じです.画像はImageViewを満たしておらず、ImageViewには空白があります.(2)ピクチャの幅が100 px以上である場合、ImageViewはピクチャと同じ幅比を持つため、ImageViewのlayout_height値は、画像のアスペクト比を100で割った値です.例えば画像が500 X 500ならlayout_heightは100です.画像はアスペクト比ズームを維持し、ImageViewに完全に表示され、ImageViewが完全に満たされます.
そしてscaleType
1.android:scaleType="center"は原図の大きさのままImageViewの中心に表示されます.原図のsizeがImageViewのsizeより大きい場合、多く出た部分が切り取られます.2.android:scaleType="center_inside"は、原図が正常に表示されることを目的としており、原図の大きさがImageViewのsizeより大きい場合は、原図の幅を比例して縮小し、中央にImageViewに表示される.原図sizeがImageViewのsizeより小さい場合は、中央表示ピクチャの処理は行われません.3.android:scaleType="center_crop"は、元の図でImageViewを満たすことを目的とし、元の図sizeがImageViewのsizeより大きい場合はcenter_Inside同様に、スケールで縮小し、ImageViewに中央に表示します.原図sizeがImageViewのsizeより小さい場合は、原図の幅と高さを比例して引き上げ、ImageViewの中央に表示されます.4.android:scaleType=「matrix」原図の大きさを変えず、ImageViewの左上から描き始め、超えた部分を切り取り処理します.5.android:scaleType="fit_xy"画像を指定の大きさでImageViewに表示し、表示画像を伸ばし、元の割合を保つことなくImageViewを満たす.6.android:scaleType=「fit_start」原図をImageViewの高さまで拡大縮小し、ImageViewのstart(前部/上部)に表示します.7.android:sacleType=「fit_center」原図をImageViewの高さまで拡大縮小し、ImageViewのcenter(中央/中央)に表示する.8.android:scaleType=「fit_end」原図をImageViewの高さまで拡大縮小し、ImageViewのend(後部/尾部/底部)に表示する