【Android】46、布局的单位和尺寸

本篇博文最后修改时间: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 作为单位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值