view group

来源:互联网 发布:apk软件开发工具 编辑:程序博客网 时间:2024/05/02 15:49

get view group, need to be improved.


public class HelloworldActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        FrameLayout decor = (FrameLayout)getWindow().getDecorView();        dumpViewGroup(decor);    }        LinkedList <View> gViewQueue = new LinkedList<View>();    int gLevel = 0;    public void dumpViewGroup(ViewGroup vg)    {        final int count = vg.getChildCount();        //Log.d(TAG, "lyftest count="+count);        for (int i = 0; i < count; i++) {            final View child = vg.getChildAt(i);            //if (child instanceof ViewGroup)            showViewName(child,gLevel);            gViewQueue.add(child);                    }        gLevel++;        showlevelmark(gLevel);        while(!gViewQueue.isEmpty())        {            View headview= gViewQueue.remove();            if(headview instanceof ViewGroup)            {                dumpViewGroup((ViewGroup)headview);            }        }    }    public void showlevelmark(int level)    {            }    public void showViewName(View v, int level)    {        Log.d("TAG", " :"+level+":view="+v+"(parent:"+v.getParent()+")");    }}


result:

09-03 16:16:23.906: DEBUG/TAG(893): :0:view=android.widget.LinearLayout@40517d70(parent:com.android.internal.policy.impl.PhoneWindow$DecorView@40517530)
09-03 16:16:23.906: DEBUG/TAG(893): :1:view=android.widget.FrameLayout@40518770(parent:android.widget.LinearLayout@40517d70)
09-03 16:16:23.906: DEBUG/TAG(893): :1:view=android.widget.FrameLayout@40519af8(parent:android.widget.LinearLayout@40517d70)
09-03 16:16:23.906: DEBUG/TAG(893): :2:view=android.widget.TextView@40518d60(parent:android.widget.FrameLayout@40518770)
09-03 16:16:23.906: DEBUG/TAG(893): :3:view=android.widget.LinearLayout@40519fc8(parent:android.widget.FrameLayout@40519af8)
09-03 16:16:23.906: DEBUG/TAG(893): :4:view=android.widget.TextView@4051a230(parent:android.widget.LinearLayout@40519fc8)


package elfylin.helloworld;    import java.util.Queue;  import java.util.LinkedList;      import android.util.Log;  import android.view.View;  import android.view.ViewGroup;      public class DumpViewGroup {  static class ViewElement{public ViewElement(View view, int l){v = view;level = l;}View v;int level;}    //static LinkedList <View> gViewQueue = new LinkedList<View>();       //static int gLevel = 0;   static public void DumpViewGroup(){}       static public void LevelDump(View vg, int level)        {            Queue viewQueue= new LinkedList<ViewElement>();        //ViewElement element = new ViewElement(vg, level);        viewQueue.add(new ViewElement(vg,level));        while (!viewQueue.isEmpty())        {        ViewElement head = (ViewElement) viewQueue.remove();        showViewName(head.v,head.level);        if (head.v instanceof ViewGroup)        {                //level = level+1;        for (int i = 0; i < ((ViewGroup)(head.v)).getChildCount(); i++) {                        final View child = ((ViewGroup)(head.v)).getChildAt(i);                        //if (child instanceof ViewGroup)                        //showViewName(child, level);                        viewQueue.add(new ViewElement(child,head.level+1));                                        }         }        }    }    static public void DepthDump(View vg, int level)    {    showViewName(vg, level);    if (vg instanceof ViewGroup)    {    for (int i =0; i< ((ViewGroup)vg).getChildCount();i++)    {    View child = ((ViewGroup)vg).getChildAt(i);    DepthDump(child,level+1);    }    }    }        public static void showlevelmark(int level)        {                    }        public static void showViewName(View v, int level)        {            Log.d("TAG", "lyftest :"+level+":"+(v.findFocus()!=null)+":"+(v.getVisibility())+":"+v+"( parent:"+v.getParent()+")");        }        }