android 自定义 view

来源:互联网 发布:体育废 知乎 编辑:程序博客网 时间:2024/05/01 13:42


官方文档: 一定是最先要看,且最重要的文档。

http://developer.android.com/reference/android/view/View.html

http://developer.android.com/reference/android/view/ViewGroup.html

http://developer.android.com/training/custom-views/index.html

http://developer.android.com/guide/topics/ui/custom-components.html#basic

http://docs.eoeandroid.com/training/custom-views/create-view.html

http://dev.10086.cn/cmdn/wiki/index.php?doc-view-2237.html

http://developer.android.com/reference/android/view/View.html#onFinishInflate%28%29


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

自定义ViewGroup的核心是onMeasure和onLayout以及一些dispatch方法和onInterceptTouchEvent, 自定义View的核心是onMeasure和onDraw, 自定义动画的核心是Handler以及逻辑和绘制分开编程的思想. 加上一些数学知识,曲线,差值,矩阵。基本什么效果都能做了。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Android 中Activity,Window和View之间的关系

Activity在onCreate之前调用attach方法,在attach方法中会创建window对象。window对象创建时并木有创建 Decor对象对象。用户在Activity中调用setContentView,然后调用window的setContentView,这时会检查 DecorView是否存在,如果不存在则创建DecorView对象,然后把用户自己的View 添加到DecorView中。

android_src_home/framework/policies/base/phone/com/android/internal/policy/impl目录下的PhoneWindow.java。

这里还有一篇分析的文章。

http://www.2cto.com/kf/201202/118436.html

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


这篇写的非常好啊

http://www.cnblogs.com/franksunny/archive/2012/04/20/2459738.html

http://www.cnblogs.com/franksunny/archive/2012/01/12/2320520.html

http://www.cnblogs.com/franksunny/archive/2012/05/04/2483067.html

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



http://mypyg.iteye.com/blog/968646

 
http://helloandroid.iteye.com/blog/1183424


http://www.devdiv.com/Android-lwl139678%E5%93%A5%E7%89%B9%E5%88%AB%E6%8E%A8%E5%87%BAAndroid%E8%87%AA%E5%AE%9A%E4%B9%89View%E7%A0%94%E7%A9%B6%E7%B3%BB%E5%88%97%E6%B1%87%E6%80%BB-thread-107713-1-1.html

ViewGroup进修(一) http://www.byywee.com/page/M0/S770/770766.html
http://hi.baidu.com/ljsbuct/item/b995170d9379c0dedde5b0c7
Android的View和ViewGroup分析 http://www.2cto.com/kf/201207/143408.html
http://blog.devdiv.com/android%e8%87%aa%e5%ae%9a%e4%b9%89view%e7%a0%94%e7%a9%b6%e7%b3%bb%e5%88%97%e6%b1%87%e6%80%bb.html
http://blog.csdn.net/ethan_xue/article/details/7706248

 

 

一个MeasureSpecs可以是下面三种模式之一:
·         UNSPECIFIED: 这被父视图用来决定其子视图期望的尺寸。
比如,一个线性布局可能在它的子视图上调用measure() on its child,通过设置其高度为UNSPECIFIED 以及一个宽度为EXACTLY 240,来找出这个子视图在给定240像素宽度的情况下需要显示多高。
·         EXACTLY: 这被父视图用来给子视图强加一个准确的尺寸。子视图必须使用这个大小,并确保其所有的后代将适合这个尺寸。
·         AT_MOST: 这被父视图用来给子视图强加一个最大尺寸。子视图必须确保它自己以及所有的后代都适合这个尺寸。

 

Android中View绘制流程以及invalidate()等相关方法分析
http://blog.csdn.net/qinjuning/article/details/7110211

Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
http://blog.csdn.net/qinjuning/article/details/7226787


Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
http://blog.csdn.net/qinjuning/article/details/8074262


Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
http://blog.csdn.net/qinjuning/article/details/7474827

 

http://blog.csdn.net/huangbiao86/article/details/6731530


http://weizhulin.blog.51cto.com/1556324/311457


Android自定义View以及layout属性全攻略 - http://www.android123.com.cn/androidkaifa/591.html

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

View的事件分发机制

这个平时用的确实比较少,我平时写UI少,写业务多,所以那天百度面试还真是没想起来,所以赶紧补一下。

http://blog.csdn.net/starfeng11/article/details/7009338

http://orgcent.com/android-touch-event-mechanism/

http://orgcent.com/android-key-event-mechanism/

http://www.longdw.com/touchevent/

http://www.jb51.net/article/31797.htm

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


关于view,viewGroup的measure,layout,draw等的分析
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=246603&fromuid=511991

http://blog.csdn.net/wo6925371/article/details/6735312

http://blog.csdn.net/zjmdp/article/details/7713209


 

 

Android 自定义标签属性设置及使用

http://blog.csdn.net/fengkuanghun/article/details/7466214

 

 

 

一个博客专栏,里面挺多好文章,应该时常复习。

http://blog.csdn.net/column/details/qinjuning-and-2.html

 

下面的文字很重要:

 http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html

java代码:

  1. int specMode = MeasureSpec.getMode(measureSpec);
  2. int specSize = MeasureSpec.getSize(measureSpec);

依据specMode的值,(MeasureSpec有3种模式分别是UNSPECIFIED,EXACTLY和AT_MOST如果是AT_MOST,specSize代表的是最大可获得的空间;
如果是EXACTLY,specSize 代表的是精确的尺寸;

如果是UNSPECIFIED,对于控件尺寸来说,没有任何参考意义。

2、那么这些模式和我们平时设置的layout参数fill_parent, wrap_content有什么关系呢?
经过代码测试就知道,当我们设置width或height为fill_parent时,容器在布局时调用子view的measure方法传入的模式是EXACTLY,因为子view会占据剩余容器的空间,所以它大小是确定的。
而当设置为 wrap_content时,容器传进去的是AT_MOST,表示子view的大小最多是多少,这样子view会根据这个上限来设置自己的尺寸。当子view的大小设置为精确值时,容器传入的是EXACTLY,而MeasureSpec的UNSPECIFIED模式目前还没有发现在什么情况下使用。 


  1.    View的onMeasure方法默认行为是当模式为UNSPECIFIED时,设置尺寸为mMinWidth(通常为0)或者背景drawable的最小尺寸,当模式为EXACTLY或者AT_MOST时,尺寸设置为传入的MeasureSpec的大小。 
      有个观念需要纠正的是,fill_parent应该是子view会占据剩下容器的空间,而不会覆盖前面已布局好的其他view空间,当然后面布局子view就没有空间给分配了,所以fill_parent属性对布局顺序很重要。以前所想的是把所有容器的空间都占满了,难怪google在2.2版本里把fill_parent的名字改为match_parent.

很好理解

http://blog.sina.com.cn/s/blog_61fbf8d10100zzox.html

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天又复习了一遍自定义控件,NND,一直不会,今天必须整明白。

1.这篇讲的还算简单明白,挺好的。

Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用

http://www.cnblogs.com/xiaoQLu/archive/2011/07/20/2112004.html


Android View绘制过程
http://blog.csdn.net/xyz_lmn/article/details/20385049


自定义ViewGroup实现滑屏等动作
http://345757144.iteye.com/blog/1968377

Android 自定义View及其在布局文件中的使用示例
http://www.cnblogs.com/crashmaker/p/3521310.html
http://www.cnblogs.com/crashmaker/p/3530213.html
http://www.cnblogs.com/crashmaker/p/3549365.html

自定义View及属性
http://blog.csdn.net/psh24053/article/details/7517029


android之自定义ViewGroup和自动换行的布局的实现

http://www.cnblogs.com/slider/archive/2011/11/24/2262161.html



Android开发大牛们的博客地址(持续更新)
http://blog.csdn.net/mcy478643968/article/details/19608957
http://blog.csdn.net/lian_1988/article/details/9211453


关于这个属性看这个文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView">
        <attr name="textColor" format="color" />
        <attr name="textSize" format="dimension" />
        <attr name="textPosition" format="boolean"></attr>
    </declare-styleable>

</resources>


format的取值参考这篇文章:

declare-styleable中format详解 : http://blog.csdn.net/lihengfang/article/details/8290754

http://blog.csdn.net/ethan_xue/article/details/7315064



2.一个系列,讲的够简单

http://lovewf.blog.51cto.com/1723922/723632

http://lovewf.blog.51cto.com/1723922/723669

http://lovewf.blog.51cto.com/1723922/724114

http://lovewf.blog.51cto.com/1723922/735119

作者的独立博客:http://www.incoding.org/tag/view-content

http://www.incoding.org/admin/archives/179.html

http://www.incoding.org/admin/archives/199.html

http://zuiniuwang.blog.51cto.com/3709988/720102


3.这篇文章很好的讲了自定义view的构造函数问题

http://blog.csdn.net/z103594643/article/details/6755017

http://blog.csdn.net/ethan_xue/article/details/7316102

http://mmandroid.diandian.com/post/2012-02-28/15057098

http://m.blog.csdn.net/blog/u010483428/8919233

这个似乎是一个官方文档的翻译

http://www.imobilebbs.com/wordpress/archives/1866

一个DEMO,还有简单的解释:

http://www.myexception.cn/mobile/1129949.html


4.随便搜索的时候,看到一个外国的朋友写的文章,看看人家的严谨性,值得我学习:

http://www.vogella.com/articles/AndroidCustomViews/article.html

http://www.jayway.com/2012/07/03/creating-custom-android-views-part-2-how-padding-works-and-how-to-draw-your-own-content/


5.这个对自定义也讲了讲,不过不太容易懂

http://wiki.eoe.cn/page/Custom_Drawing.html


6.

官方文档和EOE WIKI的翻译

http://developer.android.com/intl/zh-CN/guide/topics/ui/custom-components.html

http://wiki.eoeandroid.com/Custom_Components



http://www.apkbus.com/android-13413-1-1.html

http://hi.baidu.com/419848854/item/ae34091823541f6a71d5e880



好网站:突然发现的,这个网站有很多开源的UI特效

http://www.androidviews.net/

http://www.androidviews.net/category/animations/




 

原创粉丝点击