码迷,mamicode.com
首页 > 移动开发 > 详细

Android-Widget源码分析

时间:2014-08-16 02:18:20      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:android   style   java   文件   for   ar   代码   amp   



 View以及所有控件是如何得知我们在布局设置的控件ID的.

【Attrs.xml文件】

  # attrs.xml 文件.
  <declare-styleable name="View">
        <!-- reference 代表某一个资源文件!! -->
        <attr name="id" format="reference" />
        ... ...(N多信息哈,自己看代码)
  </declare-styleable>

【View的初始化】

 public static final int NO_ID = -1; 
 ... ...
 @ViewDebug.ExportedProperty(resolveId = true) // (注解) android-19/android/View/ViewDebug.java
 int mID = NO_ID; // 保存控件ID,默认值-1.
 ... ...
    
 public View(Context context, AttributeSet attrs, int defStyleAttr) {
        this(context);
        // 获取attrs.xml属性文件中的View.
        TypedArray a = context.obtainStyledAttributes(
                   attrs, com.android.internal.R.styleable.View, defStyleAttr, 0);
        ... ...
        ... ...(N多代码,省略!!)
        for (int i = 0; i < N; i++) {
            int attr = a.getIndex(i);
            switch (attr) {
                 ... ...(N多代码,省略!!)
                case com.android.internal.R.styleable.View_id: // 控件ID,获取View中的字段id.
                    mID = a.getResourceId(attr, NO_ID);
                    break;

 

【设置控件ID】

    // 设置控件ID.
    public void setId(int id) {
        mID = id;
        if (mID == View.NO_ID && mLabelForId != View.NO_ID) {
            mID = generateViewId();
        }
    }


【获取控件ID】

    // 获取控件ID.
    @ViewDebug.CapturedViewProperty
    public int getId() {
        return mID;
    }

fff


fff


Android-Widget源码分析,布布扣,bubuko.com

Android-Widget源码分析

标签:android   style   java   文件   for   ar   代码   amp   

原文地址:http://my.oschina.net/hailongqiu/blog/301725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!