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

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

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

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

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

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

最后一个也是自己认为最有意思的一种布局——帧布局,它就像是洋葱一样,由一层一层的界面构成。我们平时看视频点击暂停一般会出现一个按钮,就是一个小图标,再点一下便会正常播放了,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>

这段代码就是我们所做的简易的视频播放界面的四个小部分,准确的是三部分,从上而下依次是播放视频提示,两个按钮,还有一个暂停时显示的小图标。介绍几个重要的参数: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);
    }

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

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

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

时间: 2024-10-21 12:13:41

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

Android从无知到有知——NO.8

上一篇中提到的自定义广播事件是无序发出的,这样所有的广播接受者都可以接收到这个事件,我们还可以使得广播以有序的方式发送出去,这个和前者类似: //如果广播事件是有序发出去的,广播接受者按优先级依次收到 sendOrderedBroadcast(intent, null); //在有序广播中,优先级高的接受者可以终止广播事件 这条语句和前边的无序发送类似,第一个参数是指定的"意图",第二个是需要添加的权限,这里可以先不用管.有序接收的原理就是优先级高的先接收,然后按优先级依次接收,我们需

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

如期而至的软件设计大赛吹响了重生的号角,正如同我们的指导老师所说,这个暑假会影响你近几年的发展,也可能会决定你以后所走的道路.是的,我身边就有很好的例子,有些师哥师姐们经常跟我们说,软件大赛不仅使他们学习到了很多专业知识,而且提升了他们的自学能力,而这正是我的软肋.所以,今年这个暑假有很多意义,不仅是为了弥补去年的遗憾,更多的是将自己的自学能力提升一个档次,顺便学点知识,之所以用"顺便"这个词是因为我这个人不能主观地去做某件事,越是看重越收获寥寥,所以就把它看成是一门副业,主业就是前者

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

这几天虽说偶遇瓶颈.但也渐入佳境.因为之前没有接触过android,所以作为一个新手不会给自己过高的要求.相比于去年做的分布式资源检索,今年的移动开发着实要简单一些.尽管其本质没有太大的差别,但从用户体验方面来说更能激发每一位学习者的兴趣,这可能就是android的魅力所在吧... 前天做的"电话拨号器",最后载入到模拟器的时候不知道哪里出了错,系统总是自己主动关闭,恼羞成怒也就没再搭理它.昨天又做了"短信发送器",也遇到了和前者相似的问题,只是最后经过调试算是研制

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

今天整一下利用广播实现ip拨号. 这一块主要用到的知识是android四大组件之中的一个的broadcast   receiver(广播接收者).那么它接收什么东东呢,就是我们所无谓的一个个的事件,比方有外拨电话,低电量提示.来短信等等. 那什么又是ip拨号呢,大家可能有这种印象,在拨打长途电话的时候号码前边会加上几位数字,这就是所谓的ip号,这样打电话比直接拨打会廉价一些.事实上ip拨号的原理非常easy,它就是利用前边说的broadcast   receiver监听到我们所拨打的号码,然后把

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

紧随上一篇,说一下创建ip拨号器过程中出现的一些问题. 1)在一開始监听外拨电话的时候会报这样一个警告: Permission Denial: receiving Intent { act=android.intent.action.NEW_OUTGOING_CALL flg=0x10000010 (has extras) } to com.heng.ipdail/.OutCall requires android.permission.PROCESS_OUTGOING_CALLS due to

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

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

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

因为我们做的是手机安全卫士,所以需要一个地图定位功能,昨天在百度谷歌上找了些相关的项目,也有一些教程,到百度官方下载了相关的jar包和API,但自己建项目的时候却不是那么顺利,bug不断,弄得心烦意乱,最后终于臣服,原谅我这个刚出道不久的菜鸟吧.不过有一些错误的确让我长了见识,以前都不知道有这么一回事,通过不断地前进,不断地出错,然后不断地学习,最后继续前进,这是一个良性循环. java.lang.nullpointerexception,这是新手经常遇到的一种异常--空指针异常.当时出现这个错

android精选源码,知乎阅读瀑布流loading弹窗扫描二维码简洁的MVP

Android知乎阅读与网易音乐功能源码 Android用瀑布流展示美女图片源码 一个简洁好看的loading弹窗 QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生... 一个Android 轻量级简单易用的Log组件 android猎豹快切App源码 android金融VIP pad版 android智能图片裁剪框架源码 android移动网页浏览器源码 超级清晰易懂简洁的MVP

android 代码加载 已知文件名 的资源文件

Android开发中如果需要用到某个资源,直接使用R.drawable.**文件即可.但是如果一开始无法知道具体加载哪个资源文件,必须在程序中动态获取ID值并加载.而加载过程是使用文件名来加载的,方式如下: public static String RESOURCE_PATH = "android.resource://packagename/"; 假设存在一个名为content_icon的资源图片 public Uri getIconUri(String drawableName)