Android用户界面设计“.NET研究”:框架布局
框架布局是将控件组织在Android程序的用户界面中最简单的布局类型之一。
理解布局对于良好的Android程序设计来说是非常重要的。在这个教程里,你将学到所以关于框架布局的知识,它们主要用来在屏幕上组织特别的或重叠的视图控件。使用得当的话,很多有趣的Android程序用户界面都可以基于框架布局来设计。
什么是框架布局
框架布局是Android开发者组织视图控件最简单和最有效的布局之一。它们使用得比其它一些布局要少一些,只是因为它们一般只用于显示单个视图,或重叠的视图。框架布局常用作容器布局,因为它一般只有一个子视图(通常是另一个布局,用于组织多个视图)。
技巧:事实上,你会看到框架布局是作为你设计的任何布局资源的父布局来使用的。如果你在层级视图工具(Hierarchy Viewer tool,一个很有用的调试你的程序布局的工具)创建你的程序,你会发现你设计的任何布局资源都被显示在一个父布局中——一个框架布局。
框架布局非常简单,这使得它们非常高效。它们可以在XML布局资源文件中定义,也可以通过Java代码在程序中定义。框架布局中的一个子视图总是被绘制到相对于屏幕的左上角上。如果存在多个子视图,那么他们被按顺序一个堆叠在另一个上面的方式绘制。这意味着第一个添加到框架布局的视图将显示在栈的底部,最后添加的视图会显示在最顶部。
让我们来看一个简单的例子。我们假设有一个框架布局大小调整到控制整个屏幕(换句话说,layout_width and layout_height属性都设置为match_parent)。我们要添加三个子控件到这个框架布局:
- 一个有湖面图片的ImageView。
- 一个在屏幕顶部显示的TextView。
- 一个在屏幕底部显示的(使用layout_gravity属性将TextView下沉到父布局的底部)TextView。
下图展示这种类型的布局在屏幕上会是什么样:上海闵行企业网站制作tyle="display: block; margin-left: auto; margin-right: auto;" src="https://pic001.cnblogs.com/images/2011/145819/2011042220520866.jpg" alt="" />
在XML资源文件中定义框架布局
设计程序用户界面最方便和可维护的方法是创建XML布局资源。这个方法极大地简化了UI设计过程,将很多静态创建和用户界面控件的布局以及控件属性的定义移到XML中去,取代了写代码。
XML布局资源必须存储在/res/layout项目目录下。让我们看看前一节介绍的框架布局。同样地,这个屏幕基本上就是一个有三个子视图的框架布局:一个充满整个屏幕的图片,两个文本控件绘制在它上面,每一个文本控件都是默认透明背景。这个布局资源文件命名为/res/layout/framed.xml,在XML中如下定义:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView and上海徐汇企业网站设计与制作roid:id="@+id/ImageView01" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:src="@drawable/lake"
android:scaleType="matrix"></ImageView>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="40dp"
android:text="@string/top_text" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/bottom_text"
android:layout_gravity="bottom" android:gravity="right"
android:textColor="#fff" android:textSize="50dp" /> </FrameLayout>
回忆一下,在Activity中,只需要在onCreate()方法中添加一行代码来在屏幕上加载和显示布局资源。如果布局资源存放在/res/layout/framed.xml文件中,这行代码应该是:
用程序定义框架布局
你也可以用程序创建和配置框架布局。这通过使用FrameLayout类(android.widget.FrameLayout)来实现。你会在 RelativeLayout.LayoutParams类中找到具体的参数。同样地,典型的布局参数 (android.view.ViewGroup.LayoutParams),比如layout_height和layout_width,以及边距参数(ViewGroup.MarginLayoutParams),也能用在FrameLayout对象上。
你必须用Java创建屏幕内容,然后向setContentView()方法提供一个包含所有要作为子视图显示的控件内容的父布局对象,而不是像前面所示直接使用setContentView()方法来加载布局资源。在这里,你的父布局就是框架布局。例如,下面的代码示例了如何用程序重新创建前面描述的相同的布局。特别地,我们在活动中实例化一个FrameLayout,并在它的onCreate()方法中先添加一个ImageView控件然后再添加两个TextView控件:
super.onCreate(savedInstanceState);
TextView tv1 = new TextView(this);
tv1.setText(R.string.top_text);
tv1.setTextSize(40);
tv1.setTextColor(Color.BLACK);
TextView tv2 = new TextView(this);
tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM));
tv2.setTextSize(50);
tv2.setGravity(Gravity.RIGHT);
tv2.setText(R.string.bott上海企业网站设计与制作om_text);
tv2.setTextColor(Color.WHITE);
ImageView iv1 上海网站建设style="color: #000000;">= new ImageView(this);
iv1.setImageResource(R.drawable.lake);
iv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
iv1.setScaleType(ScaleType.MATRIX);
上海企业网站制作
FrameLayout fl = new FrameLayout(this);
fl.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
fl.addView(iv1); 上海闵行企业网站设计与制作r />
fl.addView(tv1);
fl.addView(tv2);
setContentView(fl);
}
最终屏幕运行结果和前面图片展示的一模一样。
何时使用框架布局
当你可以自由使用其它强大布局类型,如线性布局,相对布局和表格布局时,很容易会忘了框架布局。框架布局的效率使得它是包含很少视图控件的屏幕的很好的选择(主屏幕,只有一个画布的游戏界面等)。有些时候其它低效的布局设计可以简化为一个更有效率的框架布局设计,而其它时候使用更专业的布局类型会更合适。当你想要堆叠视图时框架布局是一般的选择。
看看类似的控件
FrameLayout相对比较简单。因为这一点,很多其它布局类型和视图控件都是基于它的。例如,ScrollView就是一个在子内容太大而不能在布局界限内完全展示时出现滚动条的框架布局。所有主屏幕(Home屏幕)应用小工具都位于一个框架布局中。
对于所有框架布局需要注意的是它们除了通常的背景以外还可以设置前景色。这通过android:foreground XML属性来实现。这也可以用于框架下面的视图。
总结
Android程序Android程序用户界面使用布局来定义,框架布局是最简单和最高效的布局类型之一。框架布局的子控件被相对于布局的左上角来绘制。如果框架布局中存在多个子视图,它们将按顺序绘制,最后一个子控件绘制在最上面。
Android用户界面设计“.NET研究”:框架布局相关推荐
- Android用户界面设计:框架布局
框架布局是将控件组织在Android程序的用户界面中最简单的布局类型之一. 理解布局对于良好的Android程序设计来说是非常重要的.在这个教程里,你将学到所以关于框架布局的知识,它们主要用来在屏幕上 ...
- Android用户界面设计
Android用户界面设计 用户界面设计是Android应用开发的一项重要内容.在进行开发的过程中,我们需要了解UI元素如何呈现给用户,也就是如何控制UI界面.andorid提供了4种控制UI的方法. ...
- Android用户界面设计学习之旅-第二站
通过上一篇文章,大概了解了Android用户界面的设计方式,以及如何通过XML来设计界面.并且完成了一个非常简单的示例. 在上一篇文章中,涉及到了一些资源文件,直观点说,就是res目录下的那些目录和文 ...
- android ui布局开发,Android UI设计初步(基本布局)
1.线性布局(LinearLayout) 线性布局是最简单,Android开发者使用得最多的布局类型之一,开发者用它来组织你们的用户界面上的控件.线性布局的作用就像它的名字一样:它将控件组织在一个垂直 ...
- Android用户界面设计学习之旅-第三站
通过上一篇文章,知道了如何创建一个应用程序来显示一个静态的View.然而,在大多数情况下仅仅显示是不够的,应该还需要与用户的交互行为.现在完成一个简单的和用户交互的示例. 这个小程序的需求是: 画面上 ...
- android 按钮旋转等待,旋转框架布局,其中包含动态按钮
我有一个可以根据需要设计的布局. 在这里下载演示 Java文件 import android.annotation.SuppressLint; import android.content.Conte ...
- android用户界面设计:基本按钮,Android用戶界面設計:基本按鈕
本文向你展示了在你的android應用程序中創建一個簡單的Button或ImageButton控件的步驟.首先,你會學到如何向你的布局文件中添加按鈕控件.然後你會學習如何用兩種方法處理用戶對按鈕的點擊 ...
- 【Android】Android界面设计
Android界面设计也被称为布局,其中常见的布局包括: 相对布局RelativeLayout 线性布局LinearLayout 表格布局TableLayout 网络布局GridLayout 帧布局F ...
- android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
最新文章
- 11月15日BCH协议升级提案又双叒啜来了,请查收!
- 如何设置MathType下标的正斜体
- library not found for -lAPOpenSdk解决方案
- css中margin-top/margin-bottom失效
- android连接mysql查询表内记录_Android Room数据库多表查询的使用实例
- docker服务启动:service docker start和systemctl start docker两种命令有什么区别?
- 01.query的分类-条件查询和组合查询
- Element-UI-快速入门(极简教程)
- VLC音频重采样Audio resample核心流程梳理
- 转的一个itoa实现(效率很高,并且能够正确处理INT_MIN)
- html++留言板增加删除,实现留言板删除留言的具体思路跟操作
- 开瑞k50和k50s 导航傻瓜升级方法,其他车载导航也可以参考。
- 如何实现视频平台会员多账号登录
- MATLAB2018simulink打不开MATLAB2019b的simulink,低版本simulink模型出现
- 苹果:第三方安装软件或导致严重隐私、安全风险
- 苹果系统中英文输入法切换_Mac系统,如何优雅切换中英文?
- 参数化建模类毕业论文文献有哪些?
- IntelliJ Idea及其同系列产品解决网页查看源码Html排版样式乱了
- 比上清华更难的,是加入这支中国顶级黑客战队
- 2017-2018-2 20179305《网络攻防技术》第二周作业
热门文章
- a73*2+a53*2指的是什么_什么言四字词
- trove mysql 镜像_Linux运维----03.制作trove-mysql5.7镜像
- 编程迷宫_少儿创意编程(特23)scratch之迷宫模式探索(上)
- c 结构体 不允许使用不完整的类型_.NET Core 基础类型介绍
- flask双向映射语法
- python基础知识点制作图片
- codeblock下载
- 数据结构和算法(Java)-张晨光-专题视频课程
- linux java字符集编码_Java字符集编码
- 隐藏了十年的Sudo漏洞爆出:无需密码就能获取root权限