[英]In Android, how to shift a cropped Image? (advanced ImageView positioning)
我试图在ImageView
显示较大图片的特定部分/框架。 我尝试了几种不同的XML属性( scaleType
, maxHeight
等),但我自己却不知道。
基本上我想要的东西,就是只显示该顶部此的大局观 ,其位于我的“绘制”文件夹,在我的活动的顶部。
到目前为止的代码:
<ImageView
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="1dp"
android:src="@drawable/coffee"
android:scaleType="centerCrop" />
我该怎么做才能获得想要的结果,即移动裁剪后的图像以仅显示顶部。
试试这个,它工作正常:
public class TopCropImageView extends ImageView {
public TopCropImageView(Context context) {
super(context);
setScaleType(ScaleType.MATRIX);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
recomputeImgMatrix();
}
@Override
protected boolean setFrame(int l, int t, int r, int b) {
recomputeImgMatrix();
return super.setFrame(l, t, r, b);
}
private void recomputeImgMatrix() {
final Matrix matrix = getImageMatrix();
float scale;
final int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight();
final int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom();
final int drawableWidth = getDrawable().getIntrinsicWidth();
final int drawableHeight = getDrawable().getIntrinsicHeight();
if (drawableWidth * viewHeight > drawableHeight * viewWidth) {
scale = (float) viewHeight / (float) drawableHeight;
} else {
scale = (float) viewWidth / (float) drawableWidth;
}
matrix.setScale(scale, scale);
setImageMatrix(matrix);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.