Android从无知到有知——NO.3
昨天看了下几种常见的布局,类似于曾经学的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的更多相关文章
- Android从无知到有知——NO.7
的ip拨号器在监听外拨电话时用的是系统提供的广播事件.而有些时候我们须要自己设定广播事件来满足特定的须要. Ok,今天整一下自己定义广播事件,我们用一个状态监測模块向一个3G模块发送报警信息来实现这一 ...
- Android从无知到有知——NO.1
如期而至的软件设计大赛吹响了重生的号角.正如同我们的指导老师所说,这个暑假会影响你近几年的发展,也可能会决定你以后所走的道路. 是的.我身边就有非常好的样例,有些师哥师姐们常常跟我们说.软件大赛不仅使 ...
- Android从无知到有知——NO.2
这几天虽说偶遇瓶颈.但也渐入佳境.因为之前没有接触过android,所以作为一个新手不会给自己过高的要求.相比于去年做的分布式资源检索,今年的移动开发着实要简单一些.尽管其本质没有太大的差别,但从用户 ...
- Android从无知到有知——NO.5
今天整一下利用广播实现ip拨号. 这一块主要用到的知识是android四大组件之中的一个的broadcast receiver(广播接收者).那么它接收什么东东呢,就是我们所无谓的一个个的事件,比 ...
- Android从无知到有知——NO.6
紧随上一篇,说一下创建ip拨号器过程中出现的一些问题. 1)在一開始监听外拨电话的时候会报这样一个警告: Permission Denial: receiving Intent { act=andro ...
- Android从无知到有知——NO.4
因为我们做的是手机安全卫士,因此,我们需要一个地图定位功能,些相关的项目,也有一些教程.到百度官方下载了相关的jar包和API,但自己建项目的时候却不是那么顺利,bug不断,弄得心烦意乱,最后最终臣服 ...
- Android仿今日头条和知乎等App顶部滑动导航实现代码分析及源码下载
一.本文所涉及到的知识点 源码下载 二.目标 通过利用ViewPager+FragmentStatePagerAdapter+TabLayout 实现顶部滑动效果,如图: 三.知识点讲解 1.View ...
- Docker学习-从无知到有知的学习过程
Docker学习 最近被别人提到的docker吸引到了注意力,所以打算先快速的了解一下docker到底是个上面东西. 之所以我写下这个文档呢,是为了记录对docker一无所知我是如何进行学习一门新技术 ...
- Android 程序员必须知道的 53 个知识点
1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...
随机推荐
- ArcEngine C++ 10 程序的运行环境,ArcEngine RT的授权
以前我一直以为 必须安装 Arcgis Desktop才可以授权,发现我错了,原来是这个样子的. 一.安装License manager,并授权许可server.txt 当然这个license也可以安 ...
- Libnids读书笔记 (转)
一.当日工作(或学习)内容及进展情况(以条目式陈述,必要时配图说明) Libnids读书笔记: Libnids(Library Network Intusion Detection System)网络 ...
- 3D视频的播放
3D视频的播放 人眼产生立体效果的条件有两个: 1.须要左右眼两路影像,这两路影像是不同的.具有正确的视差: 2.进入左右眼的影像要全然分离.左影像进左眼,右影像进右眼. 第一条是对3D视频源提出的要 ...
- CHtmlEditCtrl(1) : Use CHtmlEditCtrl to Create a Simple HTML Editor
I needed a lightweight HTML editor to generate "rich text" emails, so I decided to explore ...
- VC++ MFC应用程序项目文件
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Bu ...
- [Docker] Linking Node.js and MongoDB Containers
To do communcation between containers, we need to do link between containers. 1. Run a container wit ...
- 理解linux sed命令
理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前 ...
- eclipse maven scm
http://my.oschina.net/OutOfMemory/blog/178512 1.安装eclipse的maven插件 m2e(http://wiki.eclipse.org/M2E_u ...
- url文件的格式
[DEFAULT]BASEURL= [InternetShortcut]URL=WorkingDirectory=ShowCommand=IconIndex=IconFile=Modified=Hot ...
- 微信小程序 - 自定义tabbar(组件)
配置项(关于使用组件) index.wxml <!-- tabBar:tabBar配置 activeIndex: 激活页面下标 slots: 多插槽配置(需与页面一致) --> <t ...