`
825288003
  • 浏览: 110629 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

转 android view构造函数研究

 
阅读更多
上周遇到了SurfaceView的constructor的问题,周末决定略微细致地研究一下这个令人发指的玩意。

  SurfaceView是View的子类,与View一样有三个constructor:

1 public void CustomView(Context context) {}
2 public void CustomView(Context context, AttributeSet attrs) {}
3 public void CustomView(Context context, AttributeSet attrs, int defStyle) {}

  为了方便,我们分别命名为C1,C2,C3。
  C1是最简单的一个,如果你只打算用code动态创建一个view而不使用布局文件xml inflate,那么实现C1就可以了。
  C2多了一个AttributeSet类型的参数,在通过布局文件xml创建一个view时,这个参数会将xml里设定的属性传递给构造函数。如果你采用xml inflate的方法却没有在code里实现C2,那么运行时就会报错。但是由于编译能顺利通过,对于我这样的菜鸟,这个错误有时不太容易被发现。
  关于C1和C2,google和度娘上都有很多文章介绍,我就不做赘述。

  扯淡的是C3。
  C3多了一个defStyle的int参数,关于这个参数doc里是这样描述的:

  The default style to apply to this view. If 0, no style will be applied (beyond what is included in the theme). This may either be an attribute resource, whose value will be retrieved from the current theme, or an explicit style resource.

  从字面上翻译,这个参数似乎是用来指定view的默认style的,如果是0,那么将不会应用任何默认(或者叫缺省)的style。另外这个参数可以是一个属性指定的style引用,也可以直接是一个显式的style资源。
分享到:
评论

相关推荐

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

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

    Android自定义View构造函数详解

    主要为大家详细介绍了Android自定义View构造函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android自定义View的三个构造函数

    自定义View有三个构造方法,它们的作用是不同的。 public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } public MyView...

    Android如何获取子View的位置及坐标详解

    一、View 1.1、View 概述 视图 (View) 是一个容器,专门负责布局。表现为显示在屏幕上的各种视图,如 TextView、LinearLayout 等。 1.2、View 分类 View 主要分为两类,具体...View 的构造函数有四个,具体如下所示:

    [Hasen图示系列]android中键盘消息处理机制

    的构造函数 LooperCallback: :handleEvent NativeInputEve ntReceiver::ha ndleEvent Looper::p ollInner Looper::p ollOnce NativeInputEventRecei ver : public LooperCallback 有方法 NativeInputEventReceiver::...

    Android-扩展BaseAdapter实现progressBar下载

    创建MyBaseadapter带参构造函数(Context context) * 8.创建ViewHolder对象用于存储那些Item内部的View的直接引用 * 9.getView()中判断convertView是否为空,防止过多填充布局导致OOM * 10.将ViewHolder对象存储...

    Android自定义View绘制随机生成图片验证码

    本篇文章讲的是Android自定义View之随机生成图片验证码,开发中我们会经常需要随机生成图片验证码,但是这个是其次,...二、View 的几个构造函数 1、public CustomView(Context context) —>java代码直接new一个Cus

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    Android_Custom_Views:在 Android 中创建自定义视图

    Android_Custom_Views 创建自定义视图类声明... 现在,覆盖将 Context 和 AttributeSet 对象作为参数的构造函数。 导入 android.content.Context; 导入 android.util.AttributeSet; 导入 android.widget.LinearLayou

    Android自定义View的实现方法实例详解

    可以看到,首先我们在CounterView的构造函数中初始化了一些数据,并给这个View的本身注册了点击事件,这样当CounterView被点击的时候,onClick()方法就会得到调用。而onClick()方法中的逻辑就更加简单了,只是对...

    Android自定义View实现简单的圆形Progress效果

     先要创建一个类ProgressView,继承自View类,然后重写其中的两个构造方法,一个是一个参数的,一个是两个参数的,因为我们要在xml文件中使用该自定义控件,所以必须要定义这个两个参数的构造函数。创建完了这个类...

    Android自定义View实现验证码

    本文章是基于鸿洋的Android 自定义View (一) 的一些扩展,以及对Android自定义View构造函数详解里面内容的一些转载。 首先我们定义一个declare-styleable标签declare-styleable标签的作用是给自定义控件添加自定义...

    android控件

    Log.i("Activity","SecondActivity构造函数"); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("Activity","SecondActivity.onCreate"); setContentView...

    Android代码-ExpandableRecyclerView

    1.1 在构造函数中初始化你的View(包括GroupView,和childView). 1.2 分别实现以下两个方法,并在对应方法中返回对应Layout布局文件中根节点的ID。 public int getGroupViewResId() public int getChildViewResId() ...

    Android如何创建可拖动的图片控件

    1、从View派生一个控件类 ,构造函数中调用父类构造器。 2、重载其onDraw函数,在里面绘制图片。(和windows的MFC有种似曾相识的感觉,可能安卓借鉴了windows的模式吧) 消息处理 拖动图片的消息,主要是处理按下和...

    Android DynamicGrid实现拖曳交换位置功能

    (1)最好使用完全的BaseDynamicGridAdapter构造BaseDynamicGridAdapter构造函数,否则可能无法正常工作。 (2)通常以长按模式触发拖曳交换位置操作,所以一般在onItemLongClick里面startEditMode开始编辑。

    分享一个牛逼的android开发框架,看着好屌的样子

    B、与视图注入不同的是属性必须添加标签@SNIOC,注入的对象(Test)必须包含只有一个SNManager参数的构造函数,且必须实现注入者 public class Test implements ITest{ SNManager $; public Test(SNManager _$){ ...

Global site tag (gtag.js) - Google Analytics