返回顶部
首页 > 资讯 > 移动开发 >AndroidonMeasure与onDraw及自定义属性使用示例
  • 497
分享到

AndroidonMeasure与onDraw及自定义属性使用示例

AndroidonMeasureAndroidonDrawAndroid自定义属性 2023-02-16 12:02:01 497人浏览 安东尼
摘要

目录1.自定义View简介2.构造方法3.onMeasure()4.onDraw()5.onTouch()6.自定义属性6.1在res下的values下面新建attrs.xml6.2

1.自定义View简介

自定义view可以被认为是继承自View,系统没有的效果(ImageView,TextView,Button),extents View,extents ViewGrop

2.构造方法

继承View。View有四个构造方法,下面讲述四个构造方法什么时候调用:

第一个构造方法会在代码中new的时候调用

TextView textView = new TextView(this);

public TextView(Context context) {
        super(context);
    }

第二个构造方法在布局layout中使用(调用)

<com.zrc.view_java_demo_01.TextView Android:layout_width="match_parent" android:layout_height="match_parent"/>

 public TextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

第三个构造方法在布局layout中使用(调用),但是会有style

调用 <com.zrc.view_java_demo_01.TextView style="@style/defualt"/>

<style name="defualt" > <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">@color/colorAccent</item> </style>
 public TextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

还有第四个构造方法,在用到时候,再做说明,在这里就不再展开。

3.onMeasure()

获取宽高的模式

int widthSize = MeasureSpec.getMode(widthMeasureSpec); //获取前两位
int heightSize = MeasureSpec.getMode(heightMeasureSpec);

获取宽高的值,指定控件的宽高

 int widthSize = MeasureSpec.getSize(widthMeasureSpec); //获取后面30位
 int heightSize = MeasureSpec.getSize(heightMeasureSpec);

MeasureSpec.AT_MOST:在布局中指定了wrap_content

MeasureSpec.EXACTLY: 在布局中特定的值 100dp match_parent fill_parent

MeasureSpec.UNSPECIFIED:尽可能的大,很少用到。listview,Scrollview 在测量子布局时候会用UNSPECIFIED

Scrollview+ListView会出现显示不全的现象?

widthMeasureSpec widthMeasureSpec : 会包含两个信息是一个32位的值,第一个信息是模式:2位 值:30位

4.onDraw()

 
    @Override
    protected void onDraw(canvas canvas) {
        super.onDraw(canvas);
        //画文本
        canvas.drawText();
        //画弧
        canvas.drawArc();
        //画圆
        canvas.drawCircle();
    }

5.onTouch()

    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                //手指按下
                Log.e("TAG","手指按下");
                break;
            case MotionEvent.ACTION_MOVE:
                //手指移动
                Log.e("TAG","手指移动");
                break;
            case MotionEvent.ACTION_UP:
                //手指抬起
                Log.e("TAG","手指抬起");
                break;
        }
        return super.onTouchEvent(event);
    }

6.自定义属性

自定义属性就是用来配置的,android:text = "Darren"是系统自定义属性

6.1在res下的values下面新建attrs.xml

<!-- name 属性名称
         fORMat 格式: string 文字  color:颜色
                       dimension 宽高 字体大小 integer 数字
                       reference 资源(drawable)
          -->
        <attr name="text" format="string"/>
        <attr name="textColor" format="color"/>
        <attr name="textSize" format="dimension"/>
        <attr name="maxLength" format="integer"/>
        <attr name="background" format="reference|color"/>
        <!-- 枚举 -->
        <attr name="inputType">
            <enum name="number" value="1"/>
            <enum name="text" value="2"/>
            <enum name="passWord" value="3"/>
        </attr>
    </declare-styleable>

6.2在布局中使用

声明命名空间,然后在自己的自定义View中使用

xmlns:app="Http://schemas.android.com/apk/res-auto"
<com.zrc.view_java_demo_01.TextView
        app:text="Darren"
        app:textColor="@color/colorAccent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

6.3在自定义View中获取属性

 // 获取自定义属性
 TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.TextView);
 mText = array.getString(R.styleable.TextView_text);
 mTextColor = array.getColor(R.styleable.TextView_textColor,mTextColor);
  mTextSize = array.getDimensionPixelSize(R.styleable.TextView_textSize,mTextSize);
 // 回收
 array.recycle();

到此这篇关于Android onMeasure与onDraw及自定义属性使用示例的文章就介绍到这了,更多相关Android onMeasure内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: AndroidonMeasure与onDraw及自定义属性使用示例

本文链接: https://lsjlt.com/news/196398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AndroidonMeasure与onDraw及自定义属性使用示例
    目录1.自定义View简介2.构造方法3.onMeasure()4.onDraw()5.onTouch()6.自定义属性6.1在res下的values下面新建attrs.xml6.2...
    99+
    2023-02-16
    Android onMeasure Android onDraw Android自定义属性
  • CSS自定义属性的示例分析
    这篇文章主要为大家展示了“CSS自定义属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS自定义属性的示例分析”这篇文章吧。 兼容性 第一个问...
    99+
    2024-04-02
  • H5自定义属性data-*的示例分析
    这篇文章主要为大家展示了“H5自定义属性data-*的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H5自定义属性data-*的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • Fabric.js保存自定义属性方法示例
    目录引言动手试试看代码仓库引言 之前有些工友留言:在 fabric.js 中怎么保存元素的自定义属性? 比如,创建一个矩形,这个矩形有自己的 ID 属性,在执行序列化操作出来的结果...
    99+
    2023-02-14
    Fabric.js 保存自定义属性 Fabric.js 保存属性
  • HTML5中Video属性及自定义播放器的示例分析
    这篇文章主要介绍了HTML5中Video属性及自定义播放器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 使用方法: &nbs...
    99+
    2024-04-02
  • HTML5中data-*自定义属性的示例分析
    这篇文章将为大家详细讲解有关HTML5中data-*自定义属性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、关于html元素的特性1.html元素都存在一些...
    99+
    2024-04-02
  • html5自定义属性怎么使用
    这篇文章主要介绍了html5自定义属性怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html5自定义属性怎么使用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • vue中标签自定义属性的使用及说明
    目录vue标签自定义属性使用举个例子vue自定义属性的设置及获取vue中设置自定义属性及获取总结vue标签自定义属性使用 在 vue 中,尽量避免对dom的操作,通过对状态的管理实现...
    99+
    2023-05-19
    vue标签 vue标签自定义属性 vue定义属性
  • 【Java 注解】自定义注解(注解属性与使用)
    文章目录 前言一、自定义注解与元注解1.注解属性类型 二、注解的生命周期以及作用目标1.生命周期2.作用目标 三,简单使用四,注解属性赋值简化 前言 Java注解是一种元数据(m...
    99+
    2023-10-21
    java spring spring boot log4j 经验分享 笔记 后端
  • flutter tabBar 的属性及自定义实现
    flutter tabBar 的属性及自定义实现 前言一、TabBar是什么?二、TabBar 自定义三、 Tab 自定义总结 前言 在Flutter中,TabBar的indicato...
    99+
    2023-09-06
    flutter 开发语言
  • 如何使用html5的自定义data-*属性与jquery的data()
    这篇文章主要讲解了“如何使用html5的自定义data-*属性与jquery的data()”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用html5的...
    99+
    2024-04-02
  • Android自定义组件:2、如何实现和使用自定义组件、自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、...
    99+
    2022-06-06
    属性 自定义属性 Android
  • HTML5自定义属性前缀data-及dataset怎么用
    这篇文章主要介绍了HTML5自定义属性前缀data-及dataset怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。HTML5规定可以为...
    99+
    2024-04-02
  • 怎么自定义View视图的属性及引用
    今天小编给大家分享一下怎么自定义View视图的属性及引用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、创建一个类,继承V...
    99+
    2023-07-05
  • Android自定义shape的使用示例
    MainActivity如下: 代码如下: package cn.testshape; import android.os.Bundle; import android.ap...
    99+
    2022-06-06
    shape 示例 Android
  • 如何理解HTML5中的标准属性与自定义属性
    这篇文章将为大家详细讲解有关如何理解HTML5中的标准属性与自定义属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。正如 HTML5 语法中所阐述的,元素可...
    99+
    2024-04-02
  • Android自定义控件如何在XML文件中使用自定义属性
    目录前言一、为什么需要自定义控件二、具体步骤1.首先我们创建一个 layout xml文件:2.为自定义控件创建java类:3.在res/values下,新建一个attrs.xml文...
    99+
    2023-05-14
    Android XML自定义属性 Android 自定义控件
  • ajax的定义的示例与使用
    本篇内容介绍了“ajax的定义的示例与使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!AJAX全称为“A...
    99+
    2024-04-02
  • Vue自定义指令及使用实例
    这篇文章主要介绍了Vue自定义指令及使用实例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、什么是指令学习 vue 的时候肯定会接触指令,那么什么是指令呢?在 vue 中提...
    99+
    2023-06-15
  • Android自定义Livedata使用示例解析
    目录前言Livedata分析自定义Livedata总结前言 我们在开发中在使用MVVM的情况下经常会配合livedata来达到快速开发的效果,但是一般都是在activity或者fra...
    99+
    2022-12-08
    Android 自定义Livedata Android Livedata
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作