`
kingbinchow
  • 浏览: 124767 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

onMeasure()--典型视图度量时间

阅读更多
@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		measuredHeight = measureHeight(heightMeasureSpec);
		measuredWidth = measureWidth(widthMeasureSpec);
		setMeasuredDimension(measuredWidth, measuredHeight);
	}

	private int measureWidth(int widthMeasureSpec) {
		int specMode = MeasureSpec.getMode(widthMeasureSpec);
		int specSize = MeasureSpec.getSize(widthMeasureSpec);
		
		//如果不指定限制,就是默认大小
		int result = 50;
		if(specMode == MeasureSpec.AT_MOST){
			//如果父组件被控件填充,则返回外边界大小
			result = specSize;
		}else if(specMode == MeasureSpec.EXACTLY){
			//如果指定空间大小,返回控件实际大小
			result = specSize;
		}
		return result;
	}

	private int measureHeight(int heightMeasureSpec) {
		// TODO Auto-generated method stub
		int specMode = MeasureSpec.getMode(heightMeasureSpec);
		int specSize = MeasureSpec.getSize(heightMeasureSpec);
		
		//如果不指定限制,就是默认大小
		int result = 50;
		if(specMode == MeasureSpec.AT_MOST){
			//如果父组件被控件填充,则返回外边界大小
			result = specSize;
		}else if(specMode == MeasureSpec.EXACTLY){
			//如果指定空间大小,返回控件实际大小
			result = specSize;
		}
		return result;
	}
	
	
分享到:
评论

相关推荐

    安卓视图效果相关-Android自定义图片视图.rar

    然后,我们需要重写`onDraw()`方法来绘制自己的内容,或者重写`onMeasure()`和`onLayout()`来控制视图的大小和位置。 2. **绘图API**:在`onDraw()`中,我们通常会用到`Canvas`对象,它是实际进行绘图操作的接口。...

    Android代码-GuideView

    -- addHintView -- GuideView.onMeasure -- GuideView.onLayout -- GuideView.onDraw 使用 public void onResume() { super.onResume(); fragment.post(new Runnable() { @Override public void run() { ...

    自定义开关View绘制流程

    * onMeasure -> onLayout -> onDraw 重写这些方法, 实现自定义控件 * * onResume()之后执行 * * View * onMeasure() (在这个方法里指定自己的宽高) -> onDraw() (绘制自己的内容) * * ViewGroup * ...

    Android代码-为任何视图添加headview

    这个过程通常涉及重写`onMeasure`、`onLayout`以及`onTouchEvent`等方法,以确保headerview在正确的时间和方式下进行动画效果。 总的来说,`ScrollableLayout`为开发者提供了一种简单的方式来为任何视图添加可滚动...

    Android高级应用源码-Android课表视图.rar

    在Android中,为了实现独特的视图效果,通常需要继承`View`或`ViewGroup`类并重写其关键方法,如`onDraw()`、`onMeasure()`和`onLayout()`。课表视图可能需要自定义`ViewGroup`,以便能够灵活布局各个时间单元格。 ...

    android自定义组件(七) onMeasure测量尺寸

    本文将深入探讨自定义组件中的`onMeasure`方法,这是控制组件尺寸的关键环节。`onMeasure`方法允许我们精确地设定组件的大小,使其适应不同的屏幕尺寸和布局需求。 `onMeasure`方法在Android的View类中被定义,它是...

    Android-在简单的日历视图中可折叠的CalendarView

    - 创建一个新的Java类继承自`View`或`ViewGroup`,并重写必要的方法,如`onDraw()`用于绘制日历视图,`onMeasure()`用于确定View的尺寸,以及`onTouchEvent()`来处理用户的触摸事件。 2. **布局设计**: - 使用`...

    覆写onMeasure例子

    "覆写onMeasure例子"这个标题指的是在自定义View时,我们需要重写`onMeasure()`方法来精确控制视图的大小。这个过程是Android布局系统的关键部分,确保了每个View能够正确地在屏幕上占据其应有的空间。 在Android中...

    Android-实现任何视图的分层视差效果

    2. **测量与布局:** 在`onMeasure()`方法中,按照常规方式测量和布置子视图。这里的关键是保存每个子视图的原始位置,以便在滚动时进行计算。 ```java @Override protected void onMeasure(int widthMeasureSpec, ...

    Android View 的onMeasure方法详解和例子解释

    在Android开发中,`onMeasure()`方法是布局和视图尺寸计算的核心,它负责确定一个View的精确宽度和高度。本文将深入解析`onMeasure()`的工作原理,通过一个实例来帮助理解这一关键过程。 首先,`onMeasure()`方法在...

    WillFLowCustomView.

    这包括onDraw()方法用于绘制视图,onMeasure()方法用于确定视图大小,以及onLayout()方法用于布局子视图。此外,还可以覆盖其他方法如onTouchEvent()来处理触摸事件。 2. 自定义控件流程: - **定义视图类**:首先...

    android-tutorial-views:该存储库包含Codelearn Android教程-http的视图

    - `onMeasure()`:确定视图的大小。 - `onLayout()`:布局子视图。 - `onDraw()`:绘制视图到屏幕上。 - `onClick()`:点击事件处理。 3. **布局管理器** - 线性布局(LinearLayout):按垂直或水平方向排列子...

    onMeasure简单方法 完美解决ListView与ScollView!

    近期做项目碰到ScrollView与Listview冲突的情况,查看了网上一些解决listview和scollView的冲突的方法,最终选择了重写onMeasure的方法来解决这个问题。 在此对各种方法做一个个人的总结评价。 主要的方法有四种: ...

    Android 自定义View视图

    4. **测量大小**:自定义View还需要重写`onMeasure(int widthMeasureSpec, int heightMeasureSpec)`方法,以确定视图在屏幕上的大小。在这里,我们需要计算出罗盘应有的尺寸,确保其可以正确显示。 5. **响应触摸...

    Android-结合多个图像的视图

    这通常涉及到继承`View`或`ViewGroup`类,并重写其关键方法,如`onDraw()`用于绘制视图内容,以及`onMeasure()`和`onLayout()`来确定视图的大小和位置。 2. **图片加载库**: Android平台上有许多图片加载库,如...

    android-custom-view-demo:Android自定义视图单元的演示代码

    - 可能需要重写`onMeasure()`方法来设置视图的大小,确保其正确地适应父视图。 - 如果需要响应触摸事件,还需要重写`onTouchEvent()`方法。 2. **测量机制**:`onMeasure()`方法用于确定视图的大小。它使用`...

    Androi自定义视图(代码注释详细)

    3. **测量与布局**:重写`onMeasure()`方法来确定视图的大小,遵循MeasureSpec规则。`onLayout()`方法用于放置视图的子元素,如果有的话。 4. **绘制视图**:最重要的部分是重写`onDraw()`方法。这是自定义视图真正...

    博客<FlowLayout详解(一)——onMeasure()与onLayout()>对应源码

    博客《FlowLayout详解(一)——onMeasure()与onLayout()》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/47029169

    自定义视图上下无限循环滚动

    2. 在`UpDownView`类中重写必要的方法,比如`onMeasure()`来确定视图的大小,`onLayout()`来布局子视图,以及`onDraw()`来绘制视图内容。 3. 实现触控事件处理,如`onTouchEvent()`,以响应用户的滑动操作。 4. ...

    自定义视图实现水波从中心扩散效果.zip

    "自定义视图实现水波从中心扩散效果"是一个典型的Android源码学习案例,它涉及到图形渲染、动画控制以及触摸事件处理等多个核心知识点。接下来,我们将深入探讨这些关键点。 1. **自定义视图基础**: - 自定义视图...

Global site tag (gtag.js) - Google Analytics