2015-10-30-Android手机屏幕相关知识点
来源:互联网 发布:淘宝买水果坏了怎么办 编辑:程序博客网 时间:2024/06/06 06:47
- 程序启动图标各个屏幕的logo尺寸要求
- 获取手机屏幕分辨率信息
- Android Drawable切图制作标准
- 屏幕密度级别
- 手机常见分辨率
- 分辨率对应DPI制作切图请参考下面的后5项制作
- Android Density密度
- 什么是density
- 资源单位xml文件中定义大小的单位
- 取得屏幕信息宽高等
- 取得状态栏和标题栏高度
程序启动图标(各个屏幕的logo尺寸要求):
Android Icon Size and Location for Apps:
DENSITYSIZELOCATIONRATIOSCREENMARGINXXXHDPI192×192drawable-xxxhdpi4640 DPI12 to 16 pixelsXXHDPI144×144drawable-xxhdpi3480 DPI8 to 12 pixelsXHDPI96×96drawable-xhdpi2320 DPI6 to 8 pixelsHDPI72×72drawable-hdpi1.5240 DPI4 to 6 pixelsMDPI48×48drawable-mdpi1160 DPI3 to 4 pixelsMDPI48×48drawable (Cupcake)1160 DPI3 to 4 pixelsLDPI36×36drawable-ldpi0.75120 DPI2 to 3 pixelsNA512×512Google PlayNANAAs required获取手机屏幕分辨率信息
public static float PIXEL_DENSITY = 0.0f; public static int PIXEL_HEIGHT; public static int PIXEL_WIDTH; DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); PIXEL_DENSITY = metrics.density; PIXEL_HEIGHT = metrics.heightPixels; PIXEL_WIDTH = metrics.widthPixels ;
Android Drawable切图制作标准
屏幕密度级别
屏幕密度 dpi: 每英寸像素数
low:medium:high:extra-high:extra-extra-high=3:4:6:8:12
ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi,xxhdpi是480dpi
手机常见分辨率
4:035:0316:09VGA 640*480 (Video Graphics Array)WVGA 800*480 (Wide VGA)FWVGA 854*480 (Full Wide VGA)QVGA 320*240 (Quarter VGA)HD 1920*1080 High DefinitionHVGA 480*320 (Half-size VGA)QHD 960*540SVGA 800*600 (Super VGA)720p 1280*720 标清1080p 1920*1080 高清分辨率对应DPI(制作切图请参考下面的后5项制作)
ldpimdpihdpixhdpixxhdpixxxhdpiQVGA 240x320HVGA 480*320WVGA 800*480720P 1280x7201080P 1920x10801440x2560FWVGA 480x8541184x720QHD 960*540常用手机的分辨率
iphone 4/4s 960*640 (3:2)
iphone5 1136*640
小米1 854*480(FWVGA)
小米2 1280*720
Android Density(密度)
什么是density
density表示每英寸有多少个显示点(逻辑值),它的单位是dpi:dot per inch,通常屏幕大时,density就大,屏幕小时,density就小,通常
屏幕实际分辨率为240px*400px时,density=120
屏幕实际分辨率为320px*533px,density=160
屏幕实际分辨率为480px*800px,density=240
资源单位(xml文件中定义大小的单位)
dp=dip=dx (Density independent pixel)
基于屏幕密度的抽象单位,设备无关的点,用于说明与密度无关的尺寸和位置。这些单位是相对于一个160dpi的屏幕,所有一个dp是160dpi屏幕上的一个点。px
px指软件的单位点,设备相关的点
布局时尽量使用单位dip,少使用px。若使用px,如果设某控件大小400x400px,在800x480上显示正常,而在533x320的屏上就超出屏幕了。若使用dp,如果设某控件大小为160x160dp,就可以通过从系统中取density来算出真正的大小,比如在800x480屏的density设为240,而533x320屏的density设为160,借以下公式计算:
pixels = dips * (density / 160)
在800x480在屏中显示240象素,而在533x320的屏中显示为160象素,控件在屏中显示的比例是一样的。
取得屏幕信息(宽高等)
public static String getDisplayMetrics(Context cx) { String str = ""; DisplayMetrics dm = new DisplayMetrics(); dm = cx.getApplicationContext().getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; float density = dm.density; float xdpi = dm.xdpi; float ydpi = dm.ydpi; str += "The absolute width:" + String.valueOf(screenWidth) + "pixels\n"; str += "The absolute heightin:" + String.valueOf(screenHeight) + "pixels\n"; str += "The logical density of the display.:" + String.valueOf(density) + "\n"; str += "X dimension :" + String.valueOf(xdpi) + "pixels per inch\n"; str += "Y dimension :" + String.valueOf(ydpi) + "pixels per inch\n"; return str;}
取得状态栏和标题栏高度
TextView tv1;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_test2); tv1 = (TextView) findViewById(R.id.TextView01); tv1.post(new Runnable(){ public void run() { processLayout(); } }); }private void processLayout(){ Rect rect= new Rect(); Window window= getWindow(); tv1.getWindowVisibleDisplayFrame(rect); //状态栏高度 int statusBarHeight= rect.top; int contentViewTop= window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); //标题栏高度 int titleBarHeight= contentViewTop - statusBarHeight; Log.v("test", "statusBarHeight="+statusBarHeight+ " contentViewTop="+contentViewTop+ " titleBarHeight="+titleBarHeight); }
- 2015-10-30-Android手机屏幕相关知识点
- android手机屏幕适配相关.
- android中关于手机屏幕的相关操作
- android webView相关知识点
- android Native相关知识点
- Android坐标系相关知识点
- Android相关技术知识点
- Android相关知识点
- Android学习相关知识点
- Android View相关知识点
- 涉及Android手机屏幕适配的相关知识
- android优化以及相关知识点
- android View的相关知识点
- Android Edittext相关的知识点
- Android硬件加速相关知识点总结
- Android 相关面试知识点整理
- Android中冷启动相关知识点
- android获得手机屏幕大小
- datatables显示隐藏列
- solr实战问题集合
- Kotlin: Java 6 废土中的一线希望
- ssh如果对实体进行了修改,但不希望其修改映射到数据库中,修改不要放在service中
- 线索二叉树详解以及代码实现
- 2015-10-30-Android手机屏幕相关知识点
- 杭电1047 An Easy Task - java 解读
- 密码学:C/C++语言实现(原书第2版)——互动出版网
- 百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug
- mybatis3源码研究-构建SqlSessionFactory(二)
- 解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11的设置
- Dubbo zookeeper 初探
- iOS提交新版本报错error itms-90049
- POJ 2676 Sudoku (DFS)