1.越简单越好
如果一个窗口包含很多视图
[1] 启动动时间长
[2] 测量时间长
[3] 布局时间长
[4] 绘制时间长
如果视图树深度太深
[1] StackOverflowException
[2] 用户界面反应速度很慢
2.解决的办法
[1] 使用TextView的复合drawables减少层次
[2] 使用ViewStub延迟展开视图
[3] 使用<merge>合并中间视图
[4] 使用RelativeLayout减少层次
[5] 使用自定义视图
[6] 使用自定义布局
关于[1]

替代为

关于[2] 使用ViewStub延迟展开视图

首先在XML布局文件中定义 ViewStub
<ViewStub android:id = "@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/progress_overlay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
在需要展开视图时
findViewById(R.id.stub_import).setVisibility(View.VISIBLE);
// 或者
View importPanel = ((ViewStub)
findViewById(R.id.stub_import)).inflate();
展开之后变成

关于[3]使用<merge>合并视图:略
关于[4]使用RelativeLayout减少层次,总得意思就是用RelativeLayout解决复杂的布局,比如代替LinearLayout复杂的布局
关于[5]自定义视图
class CustomView extends View {
@Override
protected void onDraw(Canvas canvas) {
// 加入你的绘图编码
}
@Override
protected void onMeasure(int widthMeasureSpec,
int heightMeasureSpec) {
// 计算视图的尺寸
setMeasuredDimension(widthSpecSize, heightSpecSize);
}
}
关于[6]自定义布局
class GridLayout extends ViewGroup {
@Override
protected void onLayout(boolean changed, int l, int t,
int r, int b) {
final int count = getChildCount();
for (int i=0; i < count; i++) {
final View child = getChildAt(i);
if (child.getVisibility() != GONE) {
// 计算子视图的位置
child.layout(left, top, right, bottom);
}
}
}
}

- 大小: 18.8 KB

- 大小: 29 KB

- 大小: 26.2 KB

- 大小: 35.1 KB
分享到:
相关推荐
在这个主题中,我们重点关注"(0163)-iOS/iPhone/iPAD/iPod源代码-视图布局(View Layout)-Tool Drawer",这显然涉及到自定义`UIToolbar`的设计和交互功能。`UIToolbar`是iOS中的一个标准组件,通常用于显示一...
同时,为了提高性能,通常会使用convertView(可复用视图)和ViewHolder设计模式,避免频繁创建新的视图对象。 对于描述中的“三个集合的数据”,这意味着ListView可能需要根据不同的数据集来显示不同布局。例如,...
在Android应用开发中,动态列表布局是常见的设计模式,尤其适用于数据展示丰富的场景,如通讯录、购物列表等。这份“Android应用源码动态列表布局”是一个毕业设计项目,旨在帮助学习者掌握如何在Android环境中创建...
在Android开发中,布局(Layout)是构建用户界面的核心元素,它定义了应用程序屏幕上各个组件的排列方式和相互关系。本篇文章将深入探讨Android布局的相关知识点,包括布局类型、布局属性、布局权重以及如何优化布局...
- **MVC模式**:模型-视图-控制器(Model-View-Controller)设计模式可能被用于组织代码,其中模型处理计算逻辑,视图负责显示,控制器则协调两者之间的交互。 7. **报告部分** - **设计思路**:报告可能包含了...
设计者应根据项目的需求和目标,灵活运用这些布局技巧,以实现最佳的用户体验。 总的来说,Dreamweaver作为强大的网页设计工具,提供了多样化的布局方式,帮助设计师实现创意并创建符合现代网页标准的页面。随着...
- 检查元器件的位置和方向是否在2D布局和3D视图中保持一致。 - 确认所有元器件的高度信息都已正确输入。 #### 五、总结 PADS9.0引入的3D视图功能极大地提高了PCB设计的可视化程度,使得设计师能够更直观地评估...
它不仅包括在资源管理器中快速切换视图模式的便捷方法,还包括了在桌面和浏览器中调整图标和页面缩放的操作技巧。掌握这些操作,用户可以更加快速和灵活地处理文件,浏览网页,从而显著提高工作效率。这体现了微软在...
在本项目中,"Android应用源码之仿网易布局...通过研究这个毕业设计项目,学生不仅可以学习到Android应用的基础开发技巧,还能掌握到高级特性,如数据绑定和现代架构模式,有助于提升其在Android开发领域的专业素养。
ExtJS基于MVC(模型-视图-控制器)设计模式,这使得代码组织清晰,易于维护。 本地编辑布局是ExtJS中的一个特性,它允许开发者在本地环境中对界面元素进行实时编辑。这种布局模式强调了拖放功能,使得开发人员可以...
9. **响应式设计**:动态交叉布局可能会涉及响应式设计原则,使界面能在横屏和竖屏模式下自动调整,也可能包含对不同屏幕分辨率的优化。 10. **毕业设计论文**:在完成源码开发后,学生还需要撰写毕业设计论文,...
在iOS开发中,"流水布局"(Waterfall Layout)是一种常见的UI设计模式,它通常用于展示商品列表或者图片网格,让界面看起来更有层次感和视觉吸引力。这种布局方式的特点是每一列的高度根据内容自适应,使得屏幕空间...
■本书详细介绍了Access2003中文版的基本使用方法和技巧 ■语言简洁,层次清晰,基础知识与实例相结合,边学边练 ■实例丰富,操作步骤详细,读者只要按步操作,就能保证成功 ■每章安排了大量的练习题,针对性强,...
■本书详细介绍了Access2003中文版的基本使用方法和技巧 ■语言简洁,层次清晰,基础知识与实例相结合,边学边练 ■实例丰富,操作步骤详细,读者只要按步操作,就能保证成功 ■每章安排了大量的练习题,针对性强,...
6. MVC模式:模型-视图-控制器(MVC)是iOS开发中的核心设计模式,它将数据、用户界面和业务逻辑分离,提高了代码的可维护性和可扩展性。 7. Xcode:作为iOS开发的主要工具,Xcode包含了代码编辑器、模拟器、调试器...
同时,掌握数据绑定和动态加载内容到布局中的技巧也是必要的,例如使用RecyclerView展示列表数据,通过Adapter和ViewHolder模式提高性能。 总之,Android界面布局设计是一个综合性的主题,涵盖从基本布局到高级...
- MVC(模型-视图-控制器)或MVVM(模型-视图-ViewModel)设计模式可能被用来组织代码结构,使项目更易于维护。 9. **安全与隐私** - 注册和登录过程应考虑数据加密,如使用HTTPS协议保护用户信息的安全。 10. *...
- 考虑到横屏和竖屏模式,可能需要设计不同的布局。 8. **主题和样式**: - 可以通过设置自定义的主题和颜色资源来改变日历的外观,以匹配应用的整体风格。 9. **测试和调试**: - 在多种设备和Android版本上...
通过学习和实践这个“ios-多选表视图”项目,开发者可以掌握创建动态、交互性强的多选列表视图的技巧,提高应用的用户界面体验。同时,这也将涉及到iOS开发的很多基础和进阶知识,有助于提升整体的编程能力。