android学习总结(二)

在(一)中罗列了一些命令之后本打算写一下关于测试的Instrument框架,可是发现自己也不是很明白。去网上看了一些资料,感觉理解效果不太好,自己写不出来。所以决定拉过来一个链接,供有兴趣的人查看,自己也做个记录,之后再去查看理解:

http://www.cnblogs.com/xirihanlin/archive/2010/06/15/1758677.html


对于一个安卓应用来说,它的组成无非是前端界面和后端代码逻辑以及它们之间的交互所组成。下面就先说说我现在学到的关于前端界面的一些东西。


UI:

在一个刚刚看到的项目中,可以在res/layout中看到main.xml文件,这个就是程序的布局。如果将这个刚刚创建的项目启动,可以在设备或者emulator中看到"Hello World, MainActivity"。通过查看代码,可以看到这是通过安卓提供的TextView组建显示出来的,比如


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello World, MainActivity"
    />


</LinearLayout>


在TestView这个组建中,可以看到三个属性,前两个属性是必须存在的,常用的属性有fill_parent和wrap_content。fill_parent会强制的使构件扩展,来填充布局单元内尽可能多的空间。wrap_content将强制的将构件扩展以显示全部内容,布局元素将根据文本来更改大小。顾名思义,text里面是这个组建里面的内容,但是这种写法是不推荐的,往往的做法是在res/values文件夹中创建一个strings.xml文件来存储这些文本信息,例如


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity</string>
</resources>

相应的,TestView改为

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />


这两个显示效果是一样的。


<LinearLayout></LinearLayout >相当于是一个容器,它是一种布局对象,相当于是一些控件的容器 。它会根据你给他设置的垂直或者水平的属性值来排列里面的控件。比如我们的例子中android:orientation="vertical"规定了里面的控件会以垂直方式对齐,相应的,android:orientation="horizontal"会使控件以水平方式对齐。除了LinearLayout,还有FrameLayout、AbsoluteLayout、RelativeLayout、TableLayout这四种布局对象,在此不再一一赘述,记录下一位大神的博客,里面有比较详细的介绍:http://blog.csdn.net/android_tutor/article/details/4779097。


安卓提供的空间也还有好多好多,就不再列举,也不再去解读各个属性。本文仅仅列出使用到的控件。
下面来看下这些代码


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="10dp"
              android:background="@drawable/bg_item">


属性就不再说,主要是android:background="@drawable/bg_item",这里bg_item是一张在drawable-hdpi文件夹里面的图片。如果直接这样引入,那么在显示时图片会被强制拉伸,效果往往不好。此时,在drawable文件夹(如果没有自己建一个)里面创建一个bg_main.xml文件,并写入如下代码


<?xml version="1.0" encoding="utf-8"?>

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/bg_item"
        android:tileMode="repeat" />


这里通过src指向bg_item.png图片,android:tileMode="repeat"使得图片为平铺状态而不是拉伸,这样会使效果好一些。然后将原来的android:background="@drawable/bg_item"改为android:background="@drawable/bg_main",这样就使背景美观一些了。(这种情况或许并不适合于所有情况)


下面说一下selector


<Button android:id="@+id/start_camera_btn"
            android:layout_height="44dp"
            android:layout_width="fill_parent"
            android:text="Start Camera"
            android:typeface="sans"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:background="@drawable/button_selector"
            android:layout_marginBottom="10dp"/>


可以看到background指定的是button_selector,这个文件实际上就是放在drawable里面的button_selector.xml文件,代码如下


<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_default"/>

</selector>



安卓会从上往下的加载这些item,直到找到适配的为止。(这两个item指向的分别是两张图片,btn_pressed是一张灰色按钮的图片,btn_default是一张白色的图片)可以看到,第一个item有一个android:state_pressed="true"的属性,这是说在按动的时候适配此item。而第二个item没有别的指定,也就是说它适配于所有情况。既然安卓会从上往下加载,那么这两个item就不能调换位置,否则btn_default能够一直适配,这个selector也就没有了意义。注意一定要将默认的或者适配所有情况的item放在最后。
很明显,这个selector的功能是在点击这个button时,background会变成灰色,也就是选择btn_pressed这张图片。而在闲置时,选择btn_default这张图片,也就是button呈现白色。


好了,关于界面的一些东西就是这样了,东西还有很多,还要继续学习。


我去......昨天写完以后发现文字和代码全部都到代码框里面了,但是没有时间改过来。今天全部删除又整理了一遍,应该好了吧...这个代码框真心用不转啊!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值