android和屏幕适配的相关知识
2013-05-09 21:50
447 查看
当需要适配不同的屏幕的时候,可能需要用到以下几点:
关于单位的一点说明:
1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这 这个,不依赖像素。
dip的换算:
dip(value)=(int) (px(value)/1.5 + 0.5)
2. dp: 很简单,和dip是一样的。
3. px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变。
4. sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
备注: 根据google的推荐,像素统一使用dip,字体统一使用sp
举个例子区别px和dip:
px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。
而dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。
一、获取屏幕的分辨率(宽和高,单位是px)
不过,经过实验发现,在activity中直接调用以下方法也能够获得:
不过不晓得,为什么很少有使用这种方法直接获得的。(其实利用方法一也可以获得对应的密度信息)
三、sp和px之间的转换
也可以借助typevalue类:
其他类似
四、获取某个控件的长度和宽度
详见这篇博客
/article/3711862.html
五,获得获取控件的宽度、高度,已经获取屏幕状态栏、标题栏更详细的讲解可以参照这篇博客
http://www.iteye.com/topic/828830
Android 获取屏幕高度、标题高度、状态栏高度详解
六、动态更改控件的布局
有些可以通过控件本身的属性函数进行更改(如padding),有些布局属性则不行。此时可以利用其外围iewGroup控件对应的layoutParams来进行布局,通过设置其addRule方法
AbsListView.LayoutParams, AbsoluteLayout.LayoutParams, Gallery.LayoutParams, ViewGroup.MarginLayoutParams, ViewPager.LayoutParams, WindowManager.LayoutParams
ActionBar.LayoutParams, DrawerLayout.LayoutParams, FrameLayout.LayoutParams, GridLayout.LayoutParams, LinearLayout.LayoutParams, RadioGroup.LayoutParams, RelativeLayout.LayoutParams, SlidingPaneLayout.LayoutParams, TableLayout.LayoutParams, TableRow.LayoutParams
关于单位的一点说明:
1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这 这个,不依赖像素。
dip的换算:
dip(value)=(int) (px(value)/1.5 + 0.5)
2. dp: 很简单,和dip是一样的。
3. px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变。
4. sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
备注: 根据google的推荐,像素统一使用dip,字体统一使用sp
举个例子区别px和dip:
px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。
而dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。
一、获取屏幕的分辨率(宽和高,单位是px)
public void getScreenWidthAndHeight(){ Display display=getWindowManager().getDefaultDisplay() ; screenWidth=display.getWidth(); screenHeight=display.getHeight(); }
不过,经过实验发现,在activity中直接调用以下方法也能够获得:
screenHeight=this.screenHeight; screenWidth=this.screenWidth;
不过不晓得,为什么很少有使用这种方法直接获得的。(其实利用方法一也可以获得对应的密度信息)
//获取屏幕密度和长宽的另外一种方法 public void getDensityAndResolution(Context context){ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); //获得相对密度(0.75,1.0.1.5等) float density=displayMetrics.density; //绝对密度,也就是每个英寸有多少个像素点 int densityDpi=displayMetrics.densityDpi; //获取屏幕的宽度(单位px) screenWidth=displayMetrics.widthPixels; //获取屏幕的高度(单位px) screenHeight=displayMetrics.heightPixels; System.out.println("density:"+density+";densityDpi:"+densityDpi+";screenWidth"+screenWidth+";screenHeight:"+screenHeight); }
三、sp和px之间的转换
public static int dip2px(Context context, float dipValue) { //密度代表的是一英寸有多少个显示点 //分辨率代表长×宽分别为多少个像素点 final float scale = context.getResources().getDisplayMetrics().density; System.out.println("density:" + scale); return (int) (dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
也可以借助typevalue类:
public int dip2px(int dip){ int px; DisplayMetrics displayMetrics=new DisplayMetrics(); displayMetrics.setToDefaults(); px=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, displayMetrics); return px; }
其他类似
四、获取某个控件的长度和宽度
详见这篇博客
/article/3711862.html
五,获得获取控件的宽度、高度,已经获取屏幕状态栏、标题栏更详细的讲解可以参照这篇博客
http://www.iteye.com/topic/828830
Android 获取屏幕高度、标题高度、状态栏高度详解
六、动态更改控件的布局
有些可以通过控件本身的属性函数进行更改(如padding),有些布局属性则不行。此时可以利用其外围iewGroup控件对应的layoutParams来进行布局,通过设置其addRule方法
AbsListView.LayoutParams, AbsoluteLayout.LayoutParams, Gallery.LayoutParams, ViewGroup.MarginLayoutParams, ViewPager.LayoutParams, WindowManager.LayoutParams
ActionBar.LayoutParams, DrawerLayout.LayoutParams, FrameLayout.LayoutParams, GridLayout.LayoutParams, LinearLayout.LayoutParams, RadioGroup.LayoutParams, RelativeLayout.LayoutParams, SlidingPaneLayout.LayoutParams, TableLayout.LayoutParams, TableRow.LayoutParams
相关文章推荐
- Android 屏幕适配相关知识
- Android 屏幕适配相关知识
- 涉及Android手机屏幕适配的相关知识
- android多屏幕适配相关知识和官方翻译文档
- Android屏幕适配相关知识
- android – 多屏幕适配相关
- android之屏幕适配之一理论知识
- android – 多屏幕适配相关
- Android常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )尺寸单位转换和屏幕适配相关
- android 屏幕密度相关知识汇总
- Android小知识——手机屏幕的适配
- [转]android – 多屏幕适配相关
- android – 多屏幕适配相关
- Android屏幕适配的基础知识
- Android手机屏幕适配知识整理
- Android实战屏幕适配方案-基础知识
- android屏幕适配dip,dpi,px,sp相关
- Android 尺寸单位转换和屏幕适配相关
- Android屏幕相关知识(一)
- [转]android – 多屏幕适配相关