Android入门(38)——第十五章 Android布局优化
2015-07-08 23:13
621 查看
1. Android常用布局样式比较:
布局原则:
2. 布局优化之include
案例一:使用include:
第一步:创建include的文件叫common_title.xml的布局文件,默认用的是RelativeLayout。
第二步:去清单文件AndroidManifest中设置隐藏系统标题栏。将application属性下的theme属性改为:
需要提醒的一点是,include进来的东西,也都可以在MainActivity中使用。
3. 布局优化之merge:
第一步:创建include文件叫common_progress:
这个文件中体现了上图的两点:第一用merge包裹,当作该布局的顶节点,也就是最外层的节点,该布局是作为子布局被其他布局include的。
第二用merge可以让内部的控件实现FrameLayout的效果,也就是控件的叠加,效果图中可以看到。
第二步:设置布局文件main:
这里面的common_progress本身里面就是一个圈和请稍后的叠加,而这里又用FrameLayout来叠加了一个正文内容,所以效果图就变成下图那样了:
效果图:
4. 布局优化之ViewStub:
没好好搞懂呀!
第一步:创建一个布局文件叫common_text:
点击按钮前:
点击按钮后:
布局原则:
2. 布局优化之include
案例一:使用include:
第一步:创建include的文件叫common_title.xml的布局文件,默认用的是RelativeLayout。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#000000" android:paddingTop="10dp" android:paddingBottom="10dp" > <TextView android:id="@+id/retur" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:text="返回" android:textColor="#ffffff" android:textSize="14sp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="布局优化" android:textColor="#ffffff" android:textSize="14sp" /> <TextView android:id="@+id/fun" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:text="功能" android:textColor="#ffffff" android:textSize="14sp" /> </RelativeLayout>
第二步:去清单文件AndroidManifest中设置隐藏系统标题栏。将application属性下的theme属性改为:
android:theme="@android:style/Theme.Light.NoTitleBar" >第三步:在布局文件中添加include控件:
<?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" > <include layout = "@layout/common_title" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="正文内容" android:textSize="18sp" /> </LinearLayout>第四步:活动文件MainActivity:什么也没有改。
package com.example.include; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }效果图:
需要提醒的一点是,include进来的东西,也都可以在MainActivity中使用。
3. 布局优化之merge:
第一步:创建include文件叫common_progress:
这个文件中体现了上图的两点:第一用merge包裹,当作该布局的顶节点,也就是最外层的节点,该布局是作为子布局被其他布局include的。
第二用merge可以让内部的控件实现FrameLayout的效果,也就是控件的叠加,效果图中可以看到。
<?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="请稍后" /> </merge>
第二步:设置布局文件main:
这里面的common_progress本身里面就是一个圈和请稍后的叠加,而这里又用FrameLayout来叠加了一个正文内容,所以效果图就变成下图那样了:
<?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" > <include layout = "@layout/common_title" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="正文内容" android:textSize="18sp" /> <include layout="@layout/common_progress" /> </FrameLayout> </LinearLayout>
效果图:
4. 布局优化之ViewStub:
没好好搞懂呀!
第一步:创建一个布局文件叫common_text:
<?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:layout_width="wrap_content" android:layout_height="wrap_content" android:text="隐藏内容" /> </LinearLayout>第二步:在布局文件main中添加Button和ViewStub控件:
<?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" > <include layout = "@layout/common_title" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="正文内容" android:textSize="18sp" /> <include layout="@layout/common_progress" /> </FrameLayout> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示隐藏内容"/> <ViewStub android:layout="@layout/common_text" android:id="@+id/stub" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>第三步:设置MainActivity文件:
package com.example.include; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewStub; import android.widget.Button; public class MainActivity extends Activity { private Button button; private ViewStub stub; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.button); stub = (ViewStub) findViewById(R.id.stub); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 点击按钮时,stub加载布局。 stub.inflate(); } }); } }效果图:
点击按钮前:
点击按钮后:
相关文章推荐
- Android DiskLruCache完全解析
- Android-DrawerLayout介绍
- android 广播简介
- Android系列教程之五:Activity的生命周期
- Android中Task任务栈的四种模式
- Android关于手机数据读取联系人数据
- Xamarin.Android开发实践(十八)
- 解决Android Studio下Element layer-list must be declared问题
- Android odex文件反编译
- Xamarin.Android开发实践(十七)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- Xamarin.Android开发实践(十六)
- Xamarin.Android开发实践(十五)
- Android入门(37)——第十四章 使用SeekBar制作可拖动的进度条
- Xamarin.Android开发实践(十四)
- Xamarin.Android开发实践(十三)
- 资江热敏打印二维码指令android
- android之3g调试1
- Android 方向传感器与磁力计和加速度传感器之间的关系
- Android图片适配,drawable文件夹,低分辨率图片是否必要