昨天看了下几种常见的布局,类似于曾经学的html。关于css+div没有接触太多,但这几种布局都比較简单。仅仅要逻辑没有太大问题就能整出来。

相对布局是我们平时默认的布局,也是最经常使用的。前边做的“电话拨号器”和“短信发送器”都是用的它。这样的布局强调控件之间的相对位置,比方利用id标称谁在谁的下边或者上边,通过空间的位置关系来定制整个UI。如果有两个控件,一个id为tv,还有一个id为xc,要想使得xc在tv的下方。便可在xc里用这样一条语句----android:layout_below="@id/tv";简洁明了。英语过三级就能看懂。当然,在相对布局中能够通过变量值调整控件的空间位置,相对于父窗口或者设置详细的參数值来实现特定的要求。

线性布局相比于前者就非常easy了,它就是横平竖直。不存在什么对齐不正确齐的。全部的控件都在一条线上,它通常与相对布局混合使用,比如我们手机里的一些系统设置,一个个条目还有单选框或者复选框。这都能够通过二者的综合实现。

表格布局,顾名思义。通过行列来设计UI,这个通经常使用于身份信息的验证布局。比方姓名、年龄、性别、身份证号等,它和线性布局差点儿相同,都能做成一样的效果。

绝对布局,就是通过layout_x和layout_y来确定一个控件相对于窗口的位置。比方QQ游戏欢乐斗地主就是通过绝对布局来实现的。扑克牌的位置利用详细參数来定位。但如今这样的布局已经废弃掉了,由于android设备的屏幕有大有小,假设靠这样的绝对的位置信息来确定一个控件在窗口中的位置非常easy出现偏差,所以如今都是通过动态的计算屏幕的宽高。然后用百分比定义控件的详细位置,这也算是与时俱进吧。

最后一个也是自己觉得最有意思的一种布局——帧布局,它就像是洋葱一样,由一层一层的界面构成。

我们平时看视频点击暂停通常会出现一个button,就是一个小图标。再点一下便会正常播放了。ok,先上一段代码:

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="播放视频中"
android:gravity="center"
android:visibility="visible"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<Button
android:onClick="play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放"
/>
<Button
android:onClick="pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="暂停"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:visibility="invisible"
/>
</LinearLayout>

这段代码就是我们所做的简易的视频播放界面的四个小部分。准确的是三部分,从上而下依次是播放视频提示,两个button,另一个暂停时显示的小图标。

介绍几个重要的參数:visibility="visible",这个是设置图标是否显示。后边我们要用到它来设置播放或者暂停时小图标的状态。src="@drawable/ic_launcher",设置的图片来源,这个能够自定义;onClick="pause",设置点击事件,为后面的状态显示做准备。再来一段:

 private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_frame);
iv=(ImageView)findViewById(R.id.iv);
}
public void play(View view){
iv.setVisibility(view.INVISIBLE);
}
public void pause(View view){
iv.setVisibility(view.VISIBLE);
}

这个便是规定了点击播放或者暂停button时小图标的状态。先得到图标。然后设置当接受“播放”时隐藏图标。接受“暂停”时显示图标,最后的效果是这样地:

  

前者是播放时的状态,后者是暂停时的状态,ok,今天先这样...

Android从无知到有知——NO.3的更多相关文章

  1. Android从无知到有知——NO.7

    的ip拨号器在监听外拨电话时用的是系统提供的广播事件.而有些时候我们须要自己设定广播事件来满足特定的须要. Ok,今天整一下自己定义广播事件,我们用一个状态监測模块向一个3G模块发送报警信息来实现这一 ...

  2. Android从无知到有知——NO.1

    如期而至的软件设计大赛吹响了重生的号角.正如同我们的指导老师所说,这个暑假会影响你近几年的发展,也可能会决定你以后所走的道路. 是的.我身边就有非常好的样例,有些师哥师姐们常常跟我们说.软件大赛不仅使 ...

  3. Android从无知到有知——NO.2

    这几天虽说偶遇瓶颈.但也渐入佳境.因为之前没有接触过android,所以作为一个新手不会给自己过高的要求.相比于去年做的分布式资源检索,今年的移动开发着实要简单一些.尽管其本质没有太大的差别,但从用户 ...

  4. Android从无知到有知——NO.5

    今天整一下利用广播实现ip拨号. 这一块主要用到的知识是android四大组件之中的一个的broadcast   receiver(广播接收者).那么它接收什么东东呢,就是我们所无谓的一个个的事件,比 ...

  5. Android从无知到有知——NO.6

    紧随上一篇,说一下创建ip拨号器过程中出现的一些问题. 1)在一開始监听外拨电话的时候会报这样一个警告: Permission Denial: receiving Intent { act=andro ...

  6. Android从无知到有知——NO.4

    因为我们做的是手机安全卫士,因此,我们需要一个地图定位功能,些相关的项目,也有一些教程.到百度官方下载了相关的jar包和API,但自己建项目的时候却不是那么顺利,bug不断,弄得心烦意乱,最后最终臣服 ...

  7. Android仿今日头条和知乎等App顶部滑动导航实现代码分析及源码下载

    一.本文所涉及到的知识点 源码下载 二.目标 通过利用ViewPager+FragmentStatePagerAdapter+TabLayout 实现顶部滑动效果,如图: 三.知识点讲解 1.View ...

  8. Docker学习-从无知到有知的学习过程

    Docker学习 最近被别人提到的docker吸引到了注意力,所以打算先快速的了解一下docker到底是个上面东西. 之所以我写下这个文档呢,是为了记录对docker一无所知我是如何进行学习一门新技术 ...

  9. Android 程序员必须知道的 53 个知识点

    1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...

随机推荐

  1. iOS:三种常见计时器(NSTimer、CADisplayLink、dispatch_source_t)的使用

    一.介绍 在iOS中,计时器是比较常用的,用于统计累加数据或者倒计时等,例如手机号获取验证码.计时器大概有那么三种,分别是:NSTimer.CADisplayLink.dispatch_source_ ...

  2. RV32C指令集

    Risc-V支持16位压缩格式,压缩格式立即数位数更少,能使用的寄存器也比较少,有些指令只能用常用8个整数寄存器(x8-x15)或者(f8-f15). 每个RVC指令都有对应的32位指令,下表列出所有 ...

  3. Go语言之进阶篇mysql增 删 改 查

    一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...

  4. [leetcode]Merge Sorted Array @ Python

    原题地址:https://oj.leetcode.com/problems/merge-sorted-array/ 题意:Given two sorted integer arrays A and B ...

  5. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

  6. 如何使用Android studio打开eclipse项目

    转: http://blog.csdn.net/zcw93219/article/details/50770445

  7. wifidog 源码初分析(4)-转

    在上一篇<wifidog 源码处分析(3)>的流程结束后,接入设备的浏览器重定向至 路由器 上 wifidog 的 http 服务(端口 2060) /wifidog/auth 上(且携带 ...

  8. Mybatis拦截器实现SQL性能监控

    Mybatis拦截器只能拦截四类对象,分别为:Executor.ParameterHandler.StatementHandler.ResultSetHandler,而SQL数据库的操作都是从Exec ...

  9. crm创建启用停用用户

    public static readonly string entityName = "systemuser";         public Guid userId = Guid ...

  10. 关于Windows勒索病毒以及445端口防护

    前两天,与这个周末,5月12日起,Onion.WNCRY两类敲诈者病毒变种在全国乃至全世界大范围内出现爆发态势,大量个人和企业.机构用户中招. 与以往不同的是,这次的新变种病毒添加了NSA(美国国家安 ...