根据宽来设置高 来显示图片的 ImageView
使用示例
<com.tooopen.weplay.widget.XProportionImageView
android:id="@+id/iac_iv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:xHeightRatio="9"
app:xWidthRatio="16" />
java 代码
/**
* Created by xz on 2017/5/9 0009.
* 比例ImageView
*/
public class XProportionImageView extends ImageView {
private final float mWidthRatio;//宽比例
private final float mHeightRatio;//高比例
public XProportionImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.XProportionImageView);
mWidthRatio = typedArray.getFloat(R.styleable.XProportionImageView_xWidthRatio, -1);
mHeightRatio = typedArray.getFloat(R.styleable.XProportionImageView_xHeightRatio, -1);
typedArray.recycle();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mWidthRatio != -1 && mHeightRatio != -1) {
final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(widthSize, Math.round(widthSize * mHeightRatio / mWidthRatio));
}
}
}
attr:
<!--比例ImageView-->
<declare-styleable name="XProportionImageView">
<attr name="xWidthRatio" format="float"/>
<attr name="xHeightRatio" format="float"/>
</declare-styleable>
网友评论