现在的位置: 首页 > 综合 > 正文

view group

2014年03月18日 ⁄ 综合 ⁄ 共 3005字 ⁄ 字号 评论关闭

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()+")");    
    }    
  
  
}  

抱歉!评论已关闭.