首页 > 系统 > Android > 正文

Android中图片的适配

2019-11-11 04:29:49
字体:
来源:转载
供稿:网友
 一般而言,做图片的适配都是根据图片的尺寸计算图片的宽高比
根据宽高比再做图片在Activity中的显示适配,这里就做个笔记吧方便以后查看
public class RatioLayout extends FrameLayout{	// 图片宽高比 scale = width/height 这个根据图片的实际比例求出	PRivate float mPicScale = 2.43f;		public RatioLayout(Context context, AttributeSet attrs) {		super(context, attrs);	}	public RatioLayout(Context context) {		super(context);	}		@Override	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {		int widthMode = MeasureSpec.getMode(widthMeasureSpec);		int heightMode = MeasureSpec.getMode(heightMeasureSpec);				if ( widthMode == MeasureSpec.EXACTLY) {// 已知宽度的模式下						// 已知宽度,即在布局文件中的width=match_parent			// 获取自身的宽高			int height = MeasureSpec.getSize(heightMeasureSpec);			// 根据公式和已知的宽度获取高度			int width = (int) (height * mPicScale+0.5f);						// 保存测绘结果			setMeasuredDimension(width, height);						// 获取子组件的宽高			int childWidth = width - getPaddingLeft() - getPaddingRight();			int childHeight = height - getPaddingBottom() - getPaddingTop();			// 测量子组件			int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY);			int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(childHeight,MeasureSpec.EXACTLY);			measureChildren(childWidthMeasureSpec, childHeightMeasureSpec);		} else if(heightMode == MeasureSpec.EXACTLY){			// 已知宽度,即在布局文件中的width=match_parent			// 获取自身的宽高			int width = MeasureSpec.getSize(widthMeasureSpec);			// 根据公式和已知的宽度获取宽度			int height = (int) (width/mPicScale+0.5f);						// 保存测绘结果			setMeasuredDimension(width, height);						// 获取子组件的宽高			int childWidth = width - getPaddingLeft() - getPaddingRight();			int childHeight = height - getPaddingBottom() - getPaddingTop();			// 测量子组件			int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY);			int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(childHeight,MeasureSpec.EXACTLY);			measureChildren(childWidthMeasureSpec, childHeightMeasureSpec);		} else {			super.onMeasure(widthMeasureSpec, heightMeasureSpec);		}			}	}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表