关于自定义View,无数大神都给出了他们宝贵的见解,详见:
http://blog.csdn.net/lmj623565791/article/details/24252901
http://blog.csdn.net/guolin_blog/article/details/17357967
我就不再班门弄斧了(群众:敢情你就发篇文凑数?)
咳,本文谈谈一些关于自定义View的一些细枝末节的问题.
Part 1
首先,为啥自定义的View要实现三个构造方法?这三个构造方法有啥不同?能不能不实现?
先把三个构造方法放出来吧~
public Button(Context context) {
this(context, null);
}
public Button(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.buttonStyle);
}
//第三个参数没有自定义样式传0
public Button(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
好了,这三个方法有什么卵用呢?
据android开发者网站上有相关的说明文档:
public View (Context context)是在java代码创建视图的时候被调用,如果是从xml填充的视图,就不会调用这个
public View (Context context, AttributeSet attrs)这个是在xml创建但是没有指定style的时候被调用
public View (Context context, AttributeSet attrs, int defStyle)应用样式时调用
简言之,第一个是代码里实例化View部件时会调用,
第二个方法是在xml里定义View部件调用,
而第三个系统是不会自动调用的,
所以!要由View(一般是指自定义View啦)显示调用(就如同上例一样在第二个构造方法里调用第三个构造方法)
Part 2
重写方法的执行顺序:
03-18 11:32:30.198 14844-14844/? I/tag: ---- public CoustomView(Context context, AttributeSet attrs) ----
03-18 11:32:30.198 14844-14844/? I/tag: ---- onFinishInflate() ----
03-18 11:32:30.227 14844-14844/? I/tag: ---- onAttachedToWindow ----
03-18 11:32:30.228 14844-14844/? I/tag: ---- onMeasure ----
03-18 11:32:30.294 14844-14844/? I/tag: ---- onMeasure ----
03-18 11:32:30.295 14844-14844/? I/tag: ---- onSizeChanged = w = 1080 h = 135 oldW = 0 oldH = 0
03-18 11:32:30.295 14844-14844/? I/tag: ---- onLayout ----
03-18 11:32:30.310 14844-14844/? I/tag: ---- onMeasure ----
03-18 11:32:30.310 14844-14844/? I/tag: ---- onLayout ----
03-18 11:32:30.311 14844-14844/? I/tag: ---- onDraw ----
03-18 11:32:30.311 14844-14844/? I/tag: ---- dispatchDraw =
分享到:
相关推荐
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。标题“开发自定义View 源码”所指的,是针对如何设计和实现自定义Android View类的...
在Android应用开发中,自定义View视图是一个重要的技术,它允许开发者根据特定需求创建独一无二的用户界面元素。本文将深入探讨如何通过继承View类来实现一个自定义的罗盘界面,以帮助开发者理解自定义视图的工作...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本项目"Android 自定义View实现水平温度计"就是这样一个实例,它通过自定义View来展示一个水平方向的温度计,...
在Android开发中,自定义View是提升应用用户体验和界面独特性的重要手段。本文将深入探讨如何实现自定义View的拖动和点击效果,主要通过两种方法进行讲解:一是使用`setOnTouchListener`并重写`onTouch`方法,二是...
Android 自定义 View 实现转盘旋转的效果 Android 的自定义 View 为开发者定义和使用个性化的 View 提供了很好的支持,想要使用自己定义的 View,需要继承 View 类,并重写构造函数和 onDraw() 函数。onDraw 函数...
本项目旨在教你如何在Android项目中创建一个自定义View,用于实现高斯模糊和毛玻璃效果,并且允许开发者自定义模糊程度。以下是关于这个主题的详细讲解。 一、高斯模糊原理 高斯模糊是一种图像处理技术,通过对图像...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。"Android 自定义View界面大合集"的主题涵盖了这个领域的广泛知识点,包括但不限于...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的UI元素,提升用户体验。本文将深度剖析如何实现一个名为“水晶/水滴 波浪球”的自定义View,并通过详细步骤讲解,帮助你掌握...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的界面元素。本示例中,我们关注的是一个自定义View,它能实现背景颜色的渐变效果,而不是常见的进度条渐变。这个自定义View是一...
方便调用,有示例。 Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View。kotlin编写的一个自定义View。
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特的用户界面元素。本主题将深入探讨如何在Android中实现自定义组合控件,即利用多个基础控件构建一个具有特殊功能或样式的复合视图。...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加个性化和高效的设计。本项目中的"自定义View源代码"主要聚焦于一个名为"TopBar"的文件,这通常是应用顶部...
在Android开发中,创建一个能够随声音大小变化的自定义View是一种常见的需求,尤其是在音乐播放器或者音频相关的应用中。这个自定义View可以是长方形或圆柱形,旨在模仿音频波形或音量指示器的效果。下面我们将深入...
在Android开发中,自定义View和自定义属性是提升应用个性化和功能扩展性的重要手段。本文将深入探讨这两个核心概念,以及如何在实际项目中应用它们。 ### 自定义View 自定义View允许开发者创建自己的视图组件,以...
本文将深入探讨如何创建一个Android音频剪辑裁剪的自定义View,以便用户可以通过拖动来调整音频的剪切时长,并通过滑块实时显示对应的时间点。 首先,我们需要理解Android的音频处理基础。Android提供了`...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有创新性的用户界面。自定义View是Android系统框架的一部分,通过扩展系统提供的基本View类或ViewGroup类,我们可以实现自己的绘制逻辑,...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。自定义View通常涉及到绘制、事件处理、动画以及性能优化等多个方面。下面我们将...
自定义View是Android开发中常见的需求,它允许开发者扩展Android系统的内置视图,以满足特定的界面设计或交互需求。创建自定义View通常包括以下步骤: - 创建一个新的Java类,继承自`View`或`ViewGroup`。 - 重写...
在Android开发中,自定义View和自定义Button是提升应用界面独特性和交互体验的重要手段。本Demo主要展示了如何通过自定义View和自定义Button来实现特定的视觉效果和交互功能,比如Button在被点击时变换背景。下面...