• 关于Android布局优化的代码使用


    1.  include标签:

          include标签的作用是在一个布局文件中导入另一个布局文件。在开发中经常会有多个页面同时拥有一部分相同的布局,这个时候如果每个布局都把那个部分的代码写一遍就会使得代码重复,浪费了资源。使用include就可以简单的导入相同部分的布局。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="欢迎您使用这款app"
    android:textSize="16dp"
    android:gravity="center"/>
    </LinearLayout>

    以上代码是一个多页面通用的布局,给它命名为include.xml,接下来在主页面activity_main.xml中引用它:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <include layout="@layout/include"/> //使用include引用了子布局

    </LinearLayout>
    于是在主页面中便看到了include页面中的内容。

    2. merge标签:
    merge标签的作用是减少布局嵌套的层次。比如刚才那个例子中,父布局与子布局都是使用的线性布局LinearLayout,这样在代码中
    等于重复写了两次的布局声明,产生了不必要的代码,这个时候就可以使用merge标签。
    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="欢迎您使用这款app"
    android:textSize="16dp"
    android:gravity="center"/>
    </merge>
    以上是修改过后的include.xml。在父布局中导入了这个页面后,这个页面就得到了父布局的LinearLayout布局,所以显示
    效果和之前的代码相比没有任何区别,但是精简了代码,节省了系统资源。
    3.Viewstub标签:
    Viewstub标签的作用是让布局在被加载的时候才会去占用资源,而INVISIBLE状态(不可见状态)下布局不会被绘制
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ViewStub
    android:id="@+id/include1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout="@layout/include"/>
    </LinearLayout>
    以上是一个Viewstub的例子,运行程序后会发现Viewstub里的布局include.xml并没有被显示出来,说明Viewstub默认状态
    下是会隐藏内容的,然后我们将它改为可视状态:
    package com.example.von.include;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.include1).setVisibility(View.VISIBLE); //利用这个方法将include1改为可视状态
    }
    }
    这时再次运行程序,会发现include.xml的内容成功显示了出来。

  • 相关阅读:
    C# winform 获取标题栏,状态栏,菜单栏的高度
    <转载>OleDb操作Access数据库:新增记录时获取自动编号的主键值
    《名利场》:微软 “ 失落的十年”
    Lisp的永恒之道(转)
    Google Earth KML数据格式转换成Shp数据格式(转)
    【转】ArcGIS投影转换与坐标转换
    利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
    C# mouseDoubleClick与DoubleClick的关系
    ACCESS通用操作数据类
    VS2010单元测试入门实践教程
  • 原文地址:https://www.cnblogs.com/vonzc/p/10332350.html
Copyright © 2020-2023  润新知