Android适配
来源:互联网 发布:中国数据统计局 编辑:程序博客网 时间:2024/05/22 12:13
dip或dp (device independent pixels)设备独立像素, 与设备屏幕有关。与终端上的物理像素点无关,是一种基于屏幕密度抽象单位,被称作“设备独立像素”,会随着屏幕的密度进行自动的大小调整.
sp (scaled pixels — best for text size):类似dp, 主要处理字体的大小。
densityDpi的值(dpi值)表示每英寸有多少个像素点,单位是dpi。
像素密度和分辨率是两个不同的概念,分辨率是总的像素点,像素密度是单位长度的像素点
HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
屏幕大小(Screen Size):屏幕的实际尺寸,指屏幕对角线的长度,单位inch,android中根据屏幕大小,把屏幕氛围几个等级:small、normal、large、extra-large
ldpi 低密度 120dpi
mdpi 中密度 160dpi
hdpi 高密度 240dpi
xhdpi 超高密度 320dpi
xxhdpi 超超高密度 480dpi
xxxhdpi 超超超高密度 640dpi
这几种dpi了,自己根据公式算的某一具体手机的dpi取最接近官方定义的dpi。
主流设备(ScreenTest):
屏幕密度 密度(density)DPI DPI宽高 屏幕宽高像素
三星s4: xxhdpi, 480, 360*640, 1080*1920pixels(1080p)
三星s6 : xxxhdpi, 640, 360*640, 1440*2560pixels
三星s3mini: hdpi, 240, 320*533, 480*800pixels
Nexus7(平板):xhdpi, 320, 600*960, 1200*1920pixels
底部带虚拟按键占据实际像素:
Nexus5: xxhdpi, 480, 360*640, 1080*1920pixels
Sony: xhdpi, 320, 360*640, 720*1080(720p)
http://www.zhihu.com/question/22181844
http://blog.csdn.net/tanqiantot/article/details/8777736
http://blog.csdn.net/ueryueryuery/article/details/20048401
解决方案:
(2)不同尺寸的适配,这点主要靠将相关值以及布局文件放置于不同的文件夹中来解决。
尺寸去加载相应文件夹下的布局文件。
这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
动态代码处理
所以,最为保险的方式,是在代码中,调用:
- DisplayMetrics metrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(metrics);
- int screenHalfWidth = metrics.widthPixels / 2;
然后修改view的大小:
- view.setLayoutParams(new LayoutParams(screenHalfWidth, LayoutParams.WRAP_CONTENT));
px与dp的代码转换公式:
http://www.oschina.net/question/139589_60142drawable-nodpi 所有密度资源,无论什么密度屏幕都会适配。
drawable-tvdpi 介于mdpi~hdpi 约213dpi 主要应用在电视。
http://www.2cto.com/kf/201411/350915.html
http://www.2cto.com/kf/201411/352719.html
补充:
values-sw720dp-land或者port:主要体现在后面两个单词的区别,我们在开发工程中,会遇到横屏和竖屏的情况,所以我们会根据这个后缀名去引用不同布局文件。
values-land(横屏)、values-port(竖屏)
http://blog.csdn.net/chenzujie/article/details/9874859
其他适配问题:
http://blog.csdn.net/a220315410/article/details/9139397
http://www.oschina.net/question/563014_118685
http://www.eoeandroid.com/thread-173973-1-1.html
layout_weight完成的适配----------------------------------------
layout_weight的真正实现原理(fill_parent和wrap_content的情况):
http://blog.csdn.net/xiechengfa/article/details/38334327
实际开发应用(往往需要设置android:layout_width="0dp"):
简单理解:当xml中控件制定的宽度或高度不是0而是填充父窗体时,layout_weight权重就不代表将控件平分,而是代表渲染(显示在布局中)的优先级。Weight值越大代表优先级越低,值要取的大一点。
按比例显示LinearLayout内各个子控件,需设置android:layout_width="0dp",如果为竖直方向的设置android:layout_height="0dp"。
Google官方推荐,当使用weight属性时,将width设为0dip即可,设置成0dip会提高性能。
http://zhidao.baidu.com/link?url=0n6gRiIUQm9ja2Mk4Kmb14FANrLy6wTk7ZalSyVUpkDNRPZRVBzJhG-GaYvOHHmUYuu2HYHGWq0yNSPSopMJZ4oHP9s7jwyEBWftIFnZ3cC
android的多国语言适配----------------------------------------
http://www.cnblogs.com/zyw-205520/p/3848399.html
http://wenku.baidu.com/link?url=oz1APK1zNN2-EXzCDfnpuXKzX8KFSSHtEiqouGbK7J2P1y4xzqB-2wqvQOrDwlrpHChmo9C6qcW7zpjTfiH0i19rHkm1PFhb7toQldIwQoG
http://wenku.baidu.com/link?url=GAk6MOleiQT3GrFbG9VxSj-uATKJpERP0gFs9RDP6cRh4JGjqo-k-8pm9YRhfJY_R6V3k1DWPDcJRsm__YcIcouyzzauNWAuYz74l5TUoHG
http://www.cnblogs.com/zealotrouge/archive/2012/11/23/2784774.html
http://www.oschina.net/translate/40-developer-tips-for-android-optimization
获得屏幕宽高度----------------------------------------------
http://bbs.51cto.com/thread-971016-1.html
http://www.cnblogs.com/pswzone/archive/2012/03/11/2389993.html
http://my.oschina.net/u/1162667/blog/188102
http://blog.sina.com.cn/s/blog_7040845601017wph.html
- android适配
- Android 适配
- android适配
- Android适配
- android适配
- android适配
- android 适配
- Android适配
- Android适配
- Android适配
- android适配
- Android适配
- android适配
- Android 适配
- android 适配
- android适配
- Android 适配
- android适配
- 洪晃说
- UIView的xib和UIViewController的xib的区别
- CMake快速入门
- Docker入门
- 是我去恶趣味方法
- Android适配
- 数据结构推荐的书籍
- picasso图片下载缓存库使用
- 《C/C++专项练习》 — (3)
- 解决默认安装AndroidX86 2.2以上版本不能上网
- iOS_小问题积累(自定义tableviewcell时覆盖父类的变量出现的问题)
- iOS应用开发:什么是ARC?
- Hadoop知识汇总
- 欢迎使用CSDN-markdown编辑器