本篇博文最后修改时间:2016年8月16日,23:25。
一、简介
本篇介绍布局的单位和尺寸。
二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。
三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato
联系方式:315878825@qq.com
Java零基础入门交流群:541462902
四、布局的单位和尺寸
1、PC上的常用单位px和pt
px(像素),屏幕内可以显示的最小元素单位
pt(磅数),1磅等于1/72英寸,一般作为字体的单位使用
2、Android布局中的常用单位dp和sp
dp(密度无关像素),也被称作dip,与px相比,在不同密度的屏幕中的显示比例将保持一致
sp(可伸缩像素),设计理念与dp想通,解决了文字
3、什么是密度
Android中的密度就是屏幕每英寸所包含的像素数,通常以dpi为单位。
比如一个手机屏幕的宽是2英寸,长是3英寸,
如果它的分辨率是320*480像素,那这个屏幕的密度就是160dpi。
如果它的分辨率是640*960,像素,那这个屏幕的密度就是320dpi。
因此密度值越高的屏幕显示的效果就越精细。
4、通过代码查看当前屏幕的密度值
修改MainActivity 中的代码,如下所示:
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
Log.d("MainActivity", "xdpi is " + xdpi);
Log.d("MainActivity", "ydpi is " + ydpi);
}
}
可以看到,在onCreate()方法中我们动态获取到了当前屏幕的密度值,
并打印出来,重新运行程序,结果如图 所示。
然后在低分辨率的模拟器上重新运行程序,结果如图所示。
5、使用dp来指定控件的宽和高
根据Android 的规定,在160dpi 的屏幕上,1dp 等于1px,
而在320dpi 的屏幕上,1dp就等于2px。
因此,使用dp来指定控件的宽和高,
就可以保证控件在不同密度的屏幕中的显示比例保持一致。
修改activity_main.xml 中的代码,如下所示:
<pre class="html" name="code"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Button"
/>
</LinearLayout>
这里我们将按钮的宽度改成了200dp,重新运行程序,效果如图 所示:
因为模拟器的屏幕密度刚好是160dpi,这时的1dp 就等于1px。
然后在低分辨率的模拟器上重新运行程序,效果如图所示。
对比两个模拟器的运行结果,你会发现:
按钮在不同分辨率的屏幕上所占大小的比例几乎是相同的。
sp 的原理和dp 是一样的,它主要是用于指定文字的大小。
6、控件或布局大小建议指定为match_parent或wrap_content
在编写Android 程序的时候,尽量将控件或布局的大小指定成match_parent或wrap_content,
如果必须要指定一个固定值,则使用dp 来作为单位,指定文字大小的时候使用sp 作为单位。
1253

被折叠的 条评论
为什么被折叠?



