昨天看了下几种常见的布局,类似于曾经学的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. 样条之拉格朗日Lagrange(一元全区间)插值函数

    这是使用拉格朗日插值函数生成的样条曲线.在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法.许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过 ...

  2. Go语言之高级篇beego框架之参数配置与路由配置

    一.参数配置 beego默认会解析当前应用下的conf/app.conf文件 1.1.beego的参数配置 appname = WEB httpport = 8080 runmode = dev 几种 ...

  3. Spiral Matrix II leetcode java

    题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...

  4. layer-list shape drawable 层叠背景 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 构建-0 Gradle DSL 属性和方法【API】

    Android Plugin DSL Reference This is the DSL reference for Android Gradle Plugin. Start reading by f ...

  6. 别再为了this发愁了:JS中的this机制

    题记:JavaScript中有很多令人困惑的地方,或者叫做机制.但是,就是这些东西让JavaScript显得那么美好而与众不同.比方说函数也是对象.闭包.原型链继承等等,而这其中就包括颇让人费解的th ...

  7. MYSQL数据删除数据,物理空间没释放

    当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已 ...

  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十一)定制一个arvo格式文件发送到kafka的topic,通过Structured Streaming读取kafka的数据

    将arvo格式数据发送到kafka的topic 第一步:定制avro schema: { "type": "record", "name": ...

  9. java多线程之间的顺序问题

    java 多线程: 这样写有问题的:这样写可以的: package com.test; import java.util.concurrent.CountDownLatch; import java. ...

  10. (转)Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场景

    自:http://www.xuanyusong.com/archives/1919 导出Unity场景的所有游戏对象信息,一种是XML一种是JSON.本篇文章我们把游戏场景中游戏对象的.旋转.缩放.平 ...