Android UI优化之include标签的使用

来源:互联网 发布:我爱你韩国知乎 编辑:程序博客网 时间:2024/06/07 23:10


在Android的官方文档中UI的优化主要涉及<include />、<merge />、<ViewStub />三类标签,本文主要讲解<include />的使用,其他两种见后文。

<merge />:http://blog.csdn.net/u012721519/article/details/51229291

<ViewStub />:http://blog.csdn.net/u012721519/article/details/51231469

在Android的开发工程中,一个良好的项目开发,不仅需要有良好的代码编写习惯,当然优化也必不可少,其中UI的优化也是其中的重要一部分,避免代码的冗余,是一个良好优秀的开发习惯和后期维护必不可少的内容之一。

<include />:

能够重用布局文件,把相同的代码写成一个单独的模块,在其他地方复用,减少代码的冗余。

注意:

可以单独使用layout属性,在<include />里定义ID属性,但在layout也定义了相关ID属性,则layout属性将会覆盖<include />属性。

也可在一个UI设计里面复用同一个<include />模块,但需注意设置LinerLayout相关方法,如下:

        ll1 = (LinearLayout)findViewById(R.id.in1);        tv1 = (TextView)ll1.findViewById(R.id.tv);

通过LinearLayout方法寻找id,否则会出现id复用的情况。

详细代码如下:

include.xml 复用布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"><TextView    android:id="@+id/tv"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:textColor="#FF0000"    android:text="aa"/></LinearLayout>

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity"    android:orientation="vertical">    <include        android:id="@+id/in1"        android:layout_width="100dp"        android:layout_height="wrap_content"        layout="@layout/include" />    <include        android:id="@+id/in2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        layout="@layout/include"/></LinearLayout>

复用了两次<include />,本人主要是用于测试使用。


MainActivity.java

package example.com.includetest;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private TextView tv1,tv2;    private LinearLayout ll1 = null;    private LinearLayout ll2 = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initUI();        initData();    }    private void initData() {        tv1.setText("include 事件一");        tv2.setText("include 事件二");        tv2.setTextColor(Color.BLUE);    }    private void initUI() {        ll2 = (LinearLayout)findViewById(R.id.in2);        ll1 = (LinearLayout)findViewById(R.id.in1);        tv1 = (TextView)ll1.findViewById(R.id.tv);        tv2 = (TextView)ll2.findViewById(R.id.tv);    }}


initData方法主要是用于测试,证明两个复用的<include />均可使用

运行效果如下:




源码下载地址:http://download.csdn.net/detail/u012721519/9500597

Good luck!

Write by Jimmy.li







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 Html打开是乱码怎么办 xp只读取消不了怎么办 手机地图信号弱怎么办 苹果定位不准确怎么办 苹果导航卡死怎么办 没有上传的发票怎么办 发票显示未上传怎么办 发票未上传怎么办 影响 公务员国考补录不合格的怎么办 车辆转入退档怎么办 校园网总是断网怎么办 校园网经常断网怎么办 身份证号姓名电话号码泄露怎么办 中国邮政银行短信通知怎么办 中通递送不到怎么办 智齿碎了一半怎么办 驾照扣50分怎么办 办不了租赁合同怎么办 收到佰仟律师函怎么办 佰仟律师打电话怎么办 右转车道右方路禁行怎么办 收费站没带现金怎么办 过收费站没有现金怎么办 高速收费站没有现金怎么办 过收费站没现金怎么办 查社保忘记密码怎么办 医保密码忘记了怎么办 买房房东不过户怎么办 转户口金牛区怎么办 高中办休学手续怎么办 电动车灯壳发黄怎么办 买二手车上当了怎么办 成都社保卡遗失怎么办 成都个人怎么办健康证 成都健康证怎么办周末 扶贫办 2020年后怎么办 学历认证通不过怎么办 中考落榜后该怎么办 高考没有填志愿怎么办 上海怎么办人户分离 四级考试被禁考怎么办