自定义实现个Factory,可以用来解析自定义的属性。
public interface Factory { /** * Hook you can supply that is called when inflating from a LayoutInflater. * You can use this to customize the tag names available in your XML * layout files. * * <p> * Note that it is good practice to prefix these custom names with your * package (i.e., com.coolcompany.apps) to avoid conflicts with system * names. * * @param name Tag name to be inflated. * @param context The context the view is being created in. * @param attrs Inflation attributes as specified in XML file. * * @return View Newly created view. Return null for the default * behavior.如果返回一个view, 那么就会直接加入到原有View树中去。 如果返回null,则会走原来类似于onCreate的方法。 */ public View onCreateView(String name, Context context, AttributeSet attrs); }
LayoutInflater.Factory这个值设置到LayoutInflater中,而LayoutInflater的获得又是跟谁Context而来的。也就是说相同的Context有着相同的LayoutInflater,那就可以重用相同的LayoutInflater.factory
在BaseActivity中加入自己的Factory
mLayoutMode = new BDLayoutMode(); // 针对该Activity的一些存储 mLayoutInflateFactory = new BDLayoutInflateFactory(); //自定义的LayoutInflateFactory mLayoutInflateFactory.setViewMode(mLayoutMode); getLayoutInflater().setFactory(mLayoutInflateFactory); // 给该Activitry设置factory
这样在BDLayoutInflateFactory中就可以自定义解析自己关心的值了。
在BaseActivity的OnResume中开始,遍历每一个控件。