android涉及的基础知识等扩展内容总结记录

    xiaoxiao2022-07-12  160

    一、dp 和 sp 的区别

         由于手机屏幕分辨率各有不同,而且无法调整当前手机的分辨率,因此,Android SDK提供了dp 和 sp 两个尺寸单位来根据分辨率调整组件和字体的大小。dp 和 sp 都是相对于160 dpi 的尺寸单位的。160 dpi 相当于每英寸屏幕上有160个物理像素点,一般320*480 或里诶死大小的分辨率的屏幕都是160 dpi 。因此,如果程序运行在带160 dpi 屏幕的手机上,dp、sp 和px的效果是一样的。但如果是更高分辨率的屏幕,如240 dpi (一般是480 * 800 分辨率的屏幕),px仍然会根据实际物理像素处理,而dp 和 sp 会用当前值乘以一个系数(240 / 160 =1.5)。例如,如果两个按钮的 android:layout_width 属性值分辨设为160 px 和 160 dp,在

    320 * 480 分辨率的屏幕上,按钮的宽度是完全相同的,但在480 * 800 分辨率的屏幕上宽度为160dp 的按钮的实机宽度就变为 240 px(240个像素点),会比宽度160 px的按钮宽50% 。在不同分辨率屏幕上显示的效果如下图所示

     sp 不仅可以按屏幕密度对尺寸进行调整,还可以按着用户设置的不同字体调整文字的尺寸,使文字以最好的效果显示。因此建议设置文字大小时使用sp,设置其他尺寸是使用dp。

    二、drawable资源问题

      drawable 目录不仅可以存储普通的图像资源,还可以存储xml图像资源。图像状态资源就是其中之一。与图像状态资源类似的还有淡入淡出资源和图像级别资源。其中淡入淡出资源只允许在两个图像之间进行切换,只是在两个图像之间采用了淡入淡出效果进行切换。图像级别资源可以为更多的图像定义级别,但需要使用代码进行控制。在drawable目录中的各种资源都可以使用类似android:src、android:background 这样的属性指定。

          淡入淡出资源文件的例子代码如下;

    <?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/lamp_on"></item> <item android:drawable="@drawable/lamp_off"></item> </transition>

    图像级别资源代码如下:

    <?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/lamp_on" android:minLevel="10" android:maxLevel="6" ></item> <item android:drawable="@drawable/lamp_off" android:minLevel="12" android:maxLevel="20"></item> </level-list>

        其中图像级别资源中的每一个<item> 标签标示一个级别区间。级别区间用android:minLevel 和android:maxLevel属性设置。setImageLevel 或setLevel 方法设置的几倍在某个区间内(android:minLevel<= level<=android:maxLevel),系统就会先用按个区间对应的图像(用android:drawable属性设置)。可以使用如下代码设置组件的图像级别。

    ImageView ivLamp = findViewById(R.id.iv0001); //设置level 为8,显示lamp_off.png ivLamp.setImageLevel(8);

    注:如上内容摘取自《Anroid  高薪程序员面试宝典一书》

     

    最新回复(0)