本文主要是介绍LayoutParams和onMeasure的效率(自定义16:9图片),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-- SetLayoutParams和onMeasure的差别
setLayoutParams:设置view的宽度和高度。
onMeasure: 设置view的可见宽度和高度。
1) LayoutParams
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.width = CommonUtils.getScreenWidth(mContext); params.height = CommonUtils.getScreenWidth(mContext) * 9 / 16; point.iv_news.setLayoutParams(params);
2)重写View的onMeasure()方法
android自定义正方形的imageview和textview- https://blog.csdn.net/hy_programmer/article/details/48137807
* 自定义16:9的图片显示
public class CustomRatioImageView extends ColorImageView {public CustomRatioImageView(Context context) {super(context);}public CustomRatioImageView(Context context, AttributeSet attrs) {super(context, attrs);}public CustomRatioImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));int childWidthSize = getMeasuredWidth();int childHeighSize = childWidthSize * 9 / 16;//高度和宽度9:16heightMeasureSpec = MeasureSpec.makeMeasureSpec(childHeighSize, MeasureSpec.EXACTLY);widthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY);super.onMeasure(widthMeasureSpec, heightMeasureSpec);} }
这篇关于LayoutParams和onMeasure的效率(自定义16:9图片)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!