`
懒骨头
  • 浏览: 45037 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

View 中 onMeasure 测试

阅读更多

在View中,onMeasure是父类调用,用来计算该View的显示空间,但是一直不理解,MeasureSpec.EXACTLY,MeasureSpec.AT_MOST,MeasureSpec.UNSPECIFIED是什么意思,做了一个简单测测试,让后Debug就明白了。代码如下:

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		setMeasuredDimension(measureWidth(widthMeasureSpec),measureHeight(heightMeasureSpec));
	}

 

	/**
	 * 高度
	 * @param heightMeasureSpec
	 * @return
	 */
	private int measureHeight(int heightMeasureSpec) {
		int specMode = MeasureSpec.getMode(heightMeasureSpec);
		int specSize = MeasureSpec.getSize(heightMeasureSpec);//父的空间大小
		int h = bitmap.getHeight();		//图片的高度
		int result = 0 ;
		if (specMode == MeasureSpec.EXACTLY) {//父为 wrap_content
			result = Math.min(h, specSize);
		}else if(specMode == MeasureSpec.AT_MOST){//父为fill_parent
 			result = specSize;
		} else {
			result = specSize; 
		}
		return result;
	}

 main.xml (使用两个layout,就是证明,size,不是整个,而是view的父容器的大小)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent" 	//修改该值
    android:layout_height="fill_parent"    //修改该值
    android:id="@+id/layoutId"
     android:layout_weight="2"
    />
    
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layoutId1"
    android:background="#FFFFFFCC"
     android:layout_weight="1"
   />   
    
    
</LinearLayout>

 

分享到:
评论

相关推荐

    Android View.onMeasure方法详解及实例

    Android View.onMeasure 方法是 View 类中非常重要的一个方法,它主要用于测量 View 的尺寸。在安卓系统中,View 在屏幕上显示之前需要经过测量(measure)和布局(layout)两个步骤。onMeasure 方法就是在测量步骤...

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

    `TestCustomView5`可能是本文中示例或测试的自定义组件,它的具体实现可能涉及到了`onMeasure`方法的使用。通过查看源代码,我们可以更深入地理解`onMeasure`在实际项目中的应用。 总之,理解和掌握`onMeasure`对于...

    View生命周期测试工程

    总的来说,“View生命周期测试工程”是一个实用的学习资源,通过实际操作可以帮助开发者深入理解View如何在Android应用中创建、操作和销毁。无论是对初学者还是有经验的开发者,它都能提供有价值的实践经验和理论...

    自定义View

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定...通过理解和实践`ViewDemo`中的四种自定义View类型及其测试代码,开发者能够更好地掌握Android UI开发的精髓,从而提高应用的用户体验和创新性。

    View的生命周期

    在`MyView`这个例子中,作者可能已经实现了上述的一些生命周期方法,并通过实际测试了解了它们的工作方式。通过分享这个示例,开发者可以学习如何创建和管理自定义View的生命周期,从而提升Android应用的用户体验和...

    android 自定义View界面大合集

    1. **自定义View的基本原理**:自定义View通常基于`View`或`ViewGroup`类进行扩展,通过重写关键方法如`onDraw()`、`onMeasure()`和`onLayout()`来实现绘图逻辑和布局管理。理解这些方法的生命周期和工作原理是创建...

    android 自定义view大全,非常好用

    在压缩包中的"grafika"可能是项目名称,Grafika是Android的一个开源项目,专注于展示和测试图形和媒体相关的API,这对于学习和理解Android的图形处理有极大的价值。它可能包含了自定义View的实例,展示如何使用...

    自定义View源代码

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加个性化和高效的设计。本项目中的"自定义View源代码"主要聚焦于一个名为"TopBar"的文件,这通常是应用顶部...

    Android中onMesure研究(1)项目源码

    1. 测试`onMeasure()`的调用顺序,理解在复杂的View树中,各个View的测量顺序。 2. 验证不同MeasureSpec模式下,自定义View尺寸的计算是否正确。 3. 检查在`onMeasure()`中设置的尺寸是否符合预期,特别是在约束条件...

    【博文源码】Android 自定义 View 基础实例

    此外,这个例子还可能包含了如何组织代码结构、编写测试以及如何在博客中清晰地解释技术概念等内容。 总之,掌握自定义View的技巧对于Android开发者来说至关重要,它不仅可以满足特定的设计需求,还能提高应用的...

    自定义组合View

    3. **测量**:在onMeasure()方法中测量View的大小,确保它能正确适应父View的约束。 4. **布局**:在onLayout()方法中确定子View的位置,如果有多个子View需要布局。 5. **事件处理**:覆写onTouchEvent()或使用...

    自定义view基础与原理源码

    4. **测量大小**:在自定义View中,需要重写`onMeasure()`方法来确定View的尺寸。这个方法需要遵循MeasureSpec规则,确保View在不同父容器和屏幕尺寸下能正确适应。 5. **触摸事件处理**:如果自定义View需要响应...

    自定义View的流程和步骤.pdf

    其中包括onMeasure()来测量View的大小、onSizeChanged()来获取View的宽高和进行额外数据计算、onDraw()来绘制View的内容。自定义View能够完全控制视图的绘制过程,包括在视图上绘制文本、图形以及响应用户事件等。 ...

    android自定义view之组合控件、重写控件

    3. **布局设计**:在`onMeasure()`方法中,你需要计算控件的大小,确保所有子View都能正确显示。在`onLayout()`方法中,布置子View的位置。 4. **绘制**:重写`onDraw()`方法,根据需求绘制控件的各个部分。可以...

    android自定义view之---组合view

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面组件。本文将深入探讨如何在Android中实现自定义组合View,即结合多个基本View来构建复杂视图。 首先,理解...

    android汽车仪表view

    在实际应用中,对自定义View进行全面测试至关重要。开发者需要确保在不同的设备、分辨率和Android版本上都能正常工作,同时使用调试工具如Hierarchy Viewer和Layout Inspector来检查绘制效果和性能问题。 总结,这...

    android自定义的边缘凹凸的View

    7. **测试**:为了确保自定义View正常工作,我们需要创建一个测试项目,如`CouponDisplayViewTest`,在其中实例化并展示这个自定义View。这将帮助我们发现并修复可能存在的问题。 自定义View时,需要注意性能优化,...

    Android自定义圆角View

    7. **测试与调试**:确保在不同设备和屏幕尺寸上测试自定义View,检查其在各种情况下的表现和渲染效果。可以使用Android Studio的Layout Inspector工具进行可视化调试。 在提供的"RoundCorner"文件中,可能包含了...

    安卓自定义View

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。这篇博客“安卓自定义View”深入探讨了如何在Android应用中创建自定义的视图,提供了详细的步骤和实践指导。...

    Android-CustomView自定义View由菜鸟到大神

    在Android开发中,自定义View是一项非常重要的技能,它能够帮助开发者实现个性化界面,提供独特的交互体验。"Android-CustomView自定义View由菜鸟到大神"这一主题旨在引导开发者从初学者逐步进阶到专家水平,理解并...

Global site tag (gtag.js) - Google Analytics