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 来实现窗口显示和销毁,对于常规从快捷方式 ...
随机推荐
- 迪米特法则(Law Of Demeter)
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就 ...
- 标识符(IDentifier)
ylbtech-Miscellaneos:标识符(IDentifier) A,返回顶部 1, 标识符(IDentifier)是指用来标识某个实体的一个符号.在不同的应用环境下有不同的含义. 在日常生活 ...
- 网络编程之webclient和httpwebrequest的使用
(1)Lambda表达式 “Lambda表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型. 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符 ...
- C/C++ 二维数组
使用C语言用到了二维数组 #include <iostream> #include <stdlib.h> using namespace std; ], int row){ ; ...
- 九度oj-1001-Java
题目描述: This time, you are supposed to find A+B where A and B are two matrices, and then count the ...
- 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)
http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) z ...
- Eclipse里选一个变量后,这个类里的该变量不变色了
使用“Alt+Shift+O”对该提示功能的开/关切换
- ps叠加模式笔记
1.叠加模式:Overlay混色模式会让图层白色的部分去加亮底色,图层深色的部分去加暗底色 2.常见按钮:1)主体渐变:2)投影:3)内阴影:颜色减淡,按钮颜色,距离1,大小3:4)外发光,正片叠底,
- glGetString(GL_VERSION) returns “OpenGL ES-CM 1.1” but my phone supports OpenGL 2
[问] I'm trying to make an NDK based OpenGL application. At some point in my code, I want to check ...
- redis 安装报错
CentOS 6.5 安装 Redis 执行 make #error "Newer version of jemalloc required" 根据你系统安装时或之后安装的选项的情 ...