我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的个HealthFood 源码
百度搜就知道很多下载的地方
布局的知识需要不断的积累并实用,所以我采取了这样的方式,而不是先去看文档介绍中的所有关于属性的知识点,觉得那样挺累,也也记不住
这里的学习接前面的布局处理(一),地址:http://blog.csdn.net/u014737138/article/details/40477309
这里学习的是一个关于软件版本的一个简单的布局:
主要学习:ScrollView布局 TextView 控件 以及在布局之间的嵌套 (ScrollView布局里面含有LinearLayout布局)
首先看效果图:
源码:
代码语言:javascript复制<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/ScrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:gravity="center"
android:text="@string/abouttitle"
android:textColor="@color/black"
android:textSize="15dip" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:maxLines="21"
android:text="@string/text1"
android:textColor="@color/black"
android:textSize="12dip"
android:width="10px" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:gravity="center"
android:maxLines="21"
android:text="@string/title2"
android:textColor="@color/black"
android:textSize="15dip" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:maxLines="21"
android:text="@string/text2"
android:textColor="@color/black"
android:textSize="12dip"
android:width="10px" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:gravity="center"
android:maxLines="21"
android:text="@string/title3"
android:textColor="@color/black"
android:textSize="15dip" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:maxLines="21"
android:text="@string/text3"
android:textColor="@color/black"
android:textSize="12dip"
android:width="10px" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:gravity="center"
android:maxLines="21"
android:text="@string/title4"
android:textColor="@color/black"
android:textSize="15dip" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:maxLines="21"
android:text="@string/text4"
android:textColor="@color/black"
android:textSize="12dip"
android:width="10px" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawableBottom="@drawable/divider"
android:gravity="bottom"
android:paddingLeft="100px"
android:text="@string/email"
android:textColor="@color/black"
android:textSize="12dip" />
</LinearLayout>
</ScrollView>
还未学习的知识点有:
1.布局的嵌套:
代码语言:javascript复制<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/ScrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white" >
<LinearLayout
>
</LinearLayout>
</ScrollView>
按照上面的格式和显示的结果来看,我们很清楚明白这个原理了,不用解释了
2.关于属性的知识点:
1)android:background="@color/white" > 这里设置背景采用的是一个白色的颜色,它取值是从资源文件color里面获取的一个name为white的值
color.xml的定义和string.xml的定义一样,new一个Android xml file,命名为color
然后定义一个name="white"的color就可以。
代码语言:javascript复制<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
</resources>
2)android:drawableBottom
//在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者
这里设置的图片就是一条横线。
3) android:text="@string/abouttitle" 设置文本,它的值时资源文件string中name=abouttitle的值 android:textColor="@color/black" 设置文本的颜色 android:textSize="15dip" /> 设置文本的大小 推荐度量单位”sp”,如”15sp”
拓展:
1.Android 常用RGB值以及中英文名称
地址:http://blog.sina.com.cn/s/blog_759dc36b0100su90.html
2)Android中dip、dp、sp、pt和px的区别
1、概述 过去,程序员通常以像素为单位设计计算机用户界面。例如:图片大小为80×32像素。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。由此我们采用与分辨率无关的度量单位来开发程序就能够解决这个问题。Android应用开发支持不同的度量单位。
android虚拟机里的像素名称对应的实际值 WVGA800 480×800像素 WVGA854 480×854像素 WXGA800 800×1280像素 WXGA720 720×1280像素 HVGA 360×480像素 QVGA 240×320像素 WQVGA400 240×400像素 WQVGA432 240×432像素 WSVGA 600×1024像素 2、度量单位含义 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,
一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 dp: dip是一样的 px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
in(英寸):长度单位。 mm(毫米):长度单位。
3、度量单位的换算公式 在android源码包TypedValue.java中,我们看如下函数
代码语言:javascript复制 public static float applyDimension(int unit, float value,DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
该函数功能:是把各单位换算为像素。 metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT; metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT; metrics.xdpi:默认值为DENSITY_DEVICE; DENSITY_DEVICE:为屏幕密度 DENSITY_DEFAULT:默认值为160
4、屏幕密度:表示每英寸有多少个显示点,与分辨率是两个不同的概念。 5、综上所述 据px = dip * density / 160,则当屏幕密度为160时,px = dip 根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知Android默认使用sp作为字号单位。将dip作为其他元素的单位。