package com.banking.xc.utils.ui; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ImageView; import skytv_com.banking.enjoymovie.R; public class JDImageView extends ImageView { private float ratio; //宽高比,width/height,Attention:not height/width private boolean isChildRequestLayout = false; public JDImageView(Context context) { super(context); } public JDImageView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.image); ratio = ta.getFloat(R.styleable.image_ratio, 1.0f); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int size = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); if (ratio >= 1) { setMeasuredDimension(size, Math.round(size / ratio)); } else { setMeasuredDimension(Math.round(height * ratio), height); } } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); return false; } @Override public void setImageDrawable(Drawable drawable) { isChildRequestLayout = true; super.setImageDrawable(drawable); isChildRequestLayout = false; } @Override public void requestLayout() { if (getWidth() > 0 && getHeight() > 0 && isChildRequestLayout) { forceLayout(); return; } super.requestLayout(); } }