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

一、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  高薪程序员面试宝典一书》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值