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时报空指针
77 0
|
Android开发 存储
|
XML Android开发 数据格式
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2) 附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求,也可以使用自定义View的onMeasure方法实现。
2196 0
|
XML Android开发 数据格式
Android自定义ViewGroup:onMeasure与onLayout(1)
Android自定义ViewGroup:onMeasure与onLayout(1) Android自定义一个ViewGroup,需要重写ViewGrouo里面的两个最重要的回调函数onMeasure()与onLayout()。
1068 0
|
前端开发 Android开发
Android学习自定义View(五)——自定义ViewGroup及其onMeasure()的理解
MainActivity如下:package cc.testviewstudy5; import android.os.Bundle; import android.
971 0
|
8天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
11天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比