Android随笔之动态加载布局

    xiaoxiao2021-03-25  115

    前言:

    动态加载与静态加载的区别。

    1、动态加载是一种优化,降低了资源的耗费。偶尔,在布局中会有一些比较复杂但是又很少用到的控件,你都可以直到真正需要的时候再加载他们,以降低你的内存消耗,提升渲染效率。

    2、动态布局,也就是可以根据业务的需求改变界面。实际上就是用代码写出界面,代码量比较大。而且维护起来十分繁琐。特别是一些界面空间比较多的时候。静态的布局,是通过xml来实现的,适用于页面比较固定的情况。但是维护起来比较方便。


    正文:

    动态加载布局用inflater来实现。

    其步骤一般为:动态加载布局 –> 向布局中动态添加组件

    一、动态加载布局:

    在Activity、Fragment等中可获取到getLayoutInflater() LayoutInflater _inflater = getLayoutInflater(); View view = _inflater.inflate(R.layout.activity_main, null); setContentView(_view); 在Adapter中不能获取到getLayoutInflater(),通过上下文获取 LayoutInflater _inflater = LayoutInflater.from(this); View view = _inflater.inflate(R.layout.activity_main, null); setContentView(_view);

    二、在布局中动态添加组件:

    // 1、获取根布局属性 FrameLayout frameLayout = (FrameLayout) findViewById(R.id.flyt_main); // 2、获取组件,设置组件属性 final Button button = new Button(this); button.setText("跳转到SecondActivity"); // 3、在布局中添加组件,设置组件属性 frameLayout.addView(_button,LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);

    当然,除了一般方法,当然也有高等级的使用方式,那就是静态XML和动态加载XML混合使用。

    混合使用也分为:

    静态主Layout动态加载静态子Layout 操作要点: 在一个静态Layout的基础上,将其作为子Layout,构建一个主Layout。 要在主Layout中设置一个容纳子Layout的容器。 在程序中获取到容器,并将子Layout以view的形式加入主Layout中。

    静态主Layout动态加载动态的Layout 操作要点: 同样在一个静态Layout的基础上,将其作为子Layout,构建一个主Layout。并在主Layout中设置一个容纳子Layout的容器。 构建一个自定义的Layout类,在类中加载子Layout(当然,你可以封装很多的方法实现你需要的功能)。 因为子Layout的加载已经包含在自定义的Layout类中,所以需要实例化该Layout类,并将其加入到主Layout中。


    详细代码例子请看:android: 静态XML和动态加载XML混合使用,以及重写Layout控件

    转载请注明原文地址: https://ju.6miu.com/read-6271.html

    最新回复(0)