Android入门(38)——第十五章 Android布局优化
来源:互联网 发布:sql2008软件下载 编辑:程序博客网 时间:2024/05/02 17:42
1. Android常用布局样式比较:
布局原则:
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() {@Overridepublic void onClick(View v) {// 点击按钮时,stub加载布局。stub.inflate();}}); }}效果图:
点击按钮前:
点击按钮后:
0 0
- Android入门(38)——第十五章 Android布局优化
- 第十五章 Android性能优化
- 第十五章Android性能优化(Android开发艺术探索)
- Android优化 —— 布局
- Android入门——布局
- android性能优化——布局优化
- Android性能优化——布局优化
- Android 性能优化——布局优化
- Android性能优化系列—布局优化
- Android性能优化—布局优化技巧
- Android优化(一)——布局优化
- 【Android性能优化(一)】—— 布局优化
- Android优化--布局优化
- Android布局优化——抽象布局:include、merge 、ViewStub
- Android修炼之道—布局优化( 100 喵喵币)
- 入门——Android 五大布局
- Android布局优化(一)
- Android UI 开发入门—线性布局
- Android DiskLruCache完全解析
- RubyGem默认源安装太慢,修改国内淘宝源
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) F. Progress Monitoring 区间dp
- Csharp学习第三天
- iOS动力学UIDynamic讲解(二)
- Android入门(38)——第十五章 Android布局优化
- 2015网络安全大会-下
- OO设计五大原则
- 统计字符串中字母出现的个数
- 用JAXB转换XML和Java对象时的循环引用问题的解决方法
- 怒的背后(六六)
- linux-4.1.1 user mode linux(UML)试用
- laravel Model模型
- Producer/Consumer Model(pthread)