返回顶部
首页 > 资讯 > 移动开发 >Android 自定义View的构造函数详细介绍
  • 522
分享到

Android 自定义View的构造函数详细介绍

view函数自定义view构造函数Android 2022-06-06 05:06:31 522人浏览 独家记忆
摘要

 Android自定义View的构造函数 自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种

 Android自定义View的构造函数

自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种常见的写法。

第一种

每个构造函数分别调用基类的构造函数,再调用一个公共的初始化方法做额外初始化。


public class MyView extends ListView {
  public MyView(Context context) {
    super(context);
    sharedConstructor();
  }
  public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    sharedConstructor();
  }
  public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    sharedConstructor();
  }
  private void sharedConstructor() {
    // Do some initialize work.
  }
}

第二种

级联式调用,每一个构造函数调用比它多一个参数的构造函数,最后一个构造函数调用基类的构造函数,最后在做一些额外的初始化工作。


public class MyView extends ListView {
  public MyView(Context context) {
    this(context, null);
  }
  public MyView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
  }
  public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    // Other initialize work.
  }
}

那么问题来了,我们该使用哪一种方式呢?

结论是:最好使用第一种,因为第二种方法在某些情况下会有问题,比如你自定义的View继承自ListView或者TextView的时候,ListView或者TextView内部的构造函数会有一个默认的defStyle, 第二种方法调用时defStyle会传入0,这将覆盖基类中默认的defStyle,进而导致一系列问题。以ListView为例,看看它的构造函数。


public ListView(Context context) {
    this(context, null);
  }
  public ListView(Context context, AttributeSet attrs) {
    this(context, attrs, com.android.internal.R.attr.listViewStyle);
  }
  public ListView(Context context, AttributeSet attrs, int defStyleAttr) {
    this(context, attrs, defStyleAttr, 0);
  }
  public ListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    // Other works.
  }

可以看到ListView的第二个构造函数代码中传入了一个com.android.internal.R.attr.listViewStyle,使用第二种方法(级联式)调用时,我们传入的是0,将会覆盖这个默认值。但是第一种方法中调用了super(context, attrs); 进而调用了基类的 this(context, attrs, com.android.internal.R.attr.listViewStyle);就不会产生问题。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:Android自定义Adapter的ListView的思路及代码android自定义进度条渐变色View的实例代码Android 自定义View的使用介绍android 自定义ScrollView实现背景图片伸缩的实现代码及思路android图像绘制(四)自定义一个SurfaceView控件解析在Android中为TextView增加自定义html标签的实现方法Android中使用ListView绘制自定义表格技巧分享Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)Android自定义View设定到FrameLayout布局中实现多组件显示的方法 分享基于Android中WEBview使用自定义的javascript进行回调的问题详解


--结束END--

本文标题: Android 自定义View的构造函数详细介绍

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

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

猜你喜欢
  • Android 自定义View的构造函数详细介绍
     Android自定义View的构造函数 自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种...
    99+
    2022-06-06
    view 函数 自定义view 构造函数 Android
  • Android自定义View构造函数详解
    初始Custom View的构造函数 之前写过一篇实现圆形进度条的博客(自定义圆形进度条),通常我们在实现Custom View的时候,都会先继承View并实现View的三个构...
    99+
    2022-06-06
    view 函数 Android
  • Android 自定义View的使用介绍
    在项目开发中,可能系统自带的一些widget不能满足我们的需求,这时就需要自定义View。 通过查看系统中的常用widget如Button,TextView,EditText,...
    99+
    2022-06-06
    view 自定义view Android
  • android 自定义控件 自定义属性详细介绍
    自定义控件在android中无处不见,自定义控件给了我们很大的方便。比如说,一个视图为imageview ,imagebutton ,textview 等诸多控件的组合,用的地...
    99+
    2022-06-06
    自定义 自定义控件 属性 自定义属性 Android
  • Android自定义控件属性详细介绍
     Android自定义控件属性详细介绍1. reference:参考某一资源ID。     (1)属性定义: <declare-styleable name = "名称"> ...
    99+
    2023-05-31
    android 自定义 控件
  • Android 自定义View时使用TypedArray配置样式属性详细介绍
     Android 自定义View时使用TypedArray配置样式属性详细介绍       在自定义vie...
    99+
    2022-06-06
    view 属性 自定义view Android
  • 怎么在Android中利用构造函数对View进行自定义
    本篇文章给大家分享的是有关怎么在Android中利用构造函数对View进行自定义,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自定义View有三个构造方法,它们的作用是不同的。...
    99+
    2023-05-31
    android view roi
  • Android自定义View中Paint、Rect、Canvas介绍(一)
    自定义View对于新手而言貌似是一个很复杂的东西。格式,各函数的意义。对于大神经常忘记各函数及一些参数的具体写法及意义,刚好在做一个风车效果,把过程及遇到的问题都写下来 1、如...
    99+
    2022-06-06
    view canvas rect Android
  • Docker自定义网络详细介绍
    目录Docker自定义网络一.自定义网络介绍二.创建自定义网络Docker自定义网络 一.自定义网络介绍 1.介绍 常规docker容器启动,可以用–link,进行容器网络绑定,但是...
    99+
    2024-04-02
  • JavaScript构造函数怎么自定义
    这篇文章主要介绍“JavaScript构造函数怎么自定义”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript构造函数怎么自定义”文章能帮助大家解决问题。典型的面向对象编程语言(比如C+...
    99+
    2023-07-05
  • Vue自定义指令的使用详细介绍
    目录1. 概述2. 钩子函数3. 自定义全局指令4. 自定义局部指令5. 使用自定义指令实现权限管理6. 使用自定义指令实现表单验证1. 概述 除了核心功能默认内置的指令,Vue也允...
    99+
    2024-04-02
  • SpringMVC超详细介绍自定义拦截器
    目录1.什么是拦截器2.自定义拦截器执行流程图3.自定义拦截器应用实例1.快速入门2.注意事项和细节3.Debug执行流程4.多个拦截器1.多个拦截器执行流程示意图2.应用实例3.主...
    99+
    2024-04-02
  • SpringBoot自定义对象参数超详细介绍作用
    目录一、实体类 Bean二、前端表单index.html三、Controller类四、运行结果截图问题提出一: 当我们用表单获取一个 Person 对象的所有属性值时, Spring...
    99+
    2024-04-02
  • JavaScript函数的详细介绍
    本篇内容主要讲解“JavaScript函数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript函数的详细介绍”吧!一、函数语法一个Jav...
    99+
    2024-04-02
  • C++中构造函数与析构函数的详解及其作用介绍
    目录构造函数默认构造函数有参构造函数析构函数析构函数例子析构函数执行时机局部对象全局对象构造函数 构造函数 (constructor) 是一种特殊的成员函数. 它会在每次创建类的新对...
    99+
    2024-04-02
  • Mysql数据库VIEW视图的详细介绍
    本文主要给大家介绍Mysql数据库VIEW视图的详细介绍,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Mysql数据库VIEW视图的详细介绍吧。&n...
    99+
    2024-04-02
  • 如何在Android项目中自定义view函数
    如何在Android项目中自定义view函数 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先 往Canvas上面draw需要一个Paint。 Paint p ...
    99+
    2023-05-31
    android view roi
  • 详细介绍Android中回调函数机制
    提示:在阅读本文章之前,请确保您对Touch事件的分发机制有一定的了解 在Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A...
    99+
    2022-06-06
    回调 函数 回调函数 Android
  • JavaScript的function函数详细介绍
    通过函数来封装任意多条语句,而且可以在任何地方、任何时间调用执行。 而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的。返回值return,...
    99+
    2024-04-02
  • c++自定义sort()函数的排序方法介绍
    目录1. 引言2. 自定义排序规则2.1 重写 < 或 > 运算符2.2 普通函数2.3 仿函数1. 引言 在C++中,sort()函数常常用来对容器内的元素进行排序,先...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作