Android onMeasure

简介: Android onMeasureimport android.content.Context;import android.

Android onMeasure


import android.content.Context;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.setBackgroundColor(Color.RED);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //假设设置View的默认宽高最小为100。
        int width = measureWidth(100, widthMeasureSpec);
        int height = this.getDefaultSize(100, heightMeasureSpec);

        //设置最终测量结果。
        setMeasuredDimension(width, height);
    }

    private int measureWidth(int size, int measureSpec) {
        int result = size;
        int specMode = MeasureSpec.getMode(measureSpec);//解析出模式。
        int specSize = MeasureSpec.getSize(measureSpec);

        switch (specMode) {
            case MeasureSpec.UNSPECIFIED:
                break;

            //设置了android:layout_width="wrap_content"
            case MeasureSpec.AT_MOST:
                result = specSize;
                break;

            //设置了android:layout_width="match_parent"或一个具体的dp/pix值。
            case MeasureSpec.EXACTLY:
                result = size;
                break;
        }

        return result;
    }
}

相关文章
|
Android开发
android组件调用onMeasure时报空指针
android组件调用onMeasure时报空指针
104 0
|
Android开发 存储
|
XML Android开发 数据格式
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2) 附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求,也可以使用自定义View的onMeasure方法实现。
2252 0
|
XML Android开发 数据格式
Android自定义ViewGroup:onMeasure与onLayout(1)
Android自定义ViewGroup:onMeasure与onLayout(1) Android自定义一个ViewGroup,需要重写ViewGrouo里面的两个最重要的回调函数onMeasure()与onLayout()。
1114 0
|
前端开发 Android开发
Android学习自定义View(五)——自定义ViewGroup及其onMeasure()的理解
MainActivity如下:package cc.testviewstudy5; import android.os.Bundle; import android.
990 0
|
8天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
7天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
19 5