文档章节

屏幕适配问题

chenruibing
 chenruibing
发布于 2015/06/02 18:23
字数 524
阅读 31
收藏 0

1 基本概念:

屏幕大小 :物理屏幕的大小,看屏幕的对角线。
分辨率   :实际上是像素的总和。1280*720
dpi      :密度。(每英寸所展示的像素)

hdpi :480*800    ~240dpi
ldpi :320*240    ~120dpi
mdpi : 320*480    ~160dpi  (参照物)
xhdpi: 1280*720   ~320dpi

缩放比例
l :m :h :x
 3:4:6:8
 
如果drawable每个文件夹都有就加载文件夹的,如果没有就向上加载。例如mdpi就加载hdpi的。也就是只要有一个文件夹有,就会自动加载。

低分辨率的图片可以跑在高分辨率(大屏)的手机上,无非就是图片拉伸了,也就是说模糊了而已,
而如果是高分辨率的图片,放在小屏手机上,那么可能直接就崩了,或者显示不了。也就是向上兼容无非
就是模糊了,向下可能就会出问题,所以像素才选定为hdpi。

涉及到背景图片时,例如欢迎界面,那么就必须切两套图,不然肯定是会拉伸的。如果是一些其他
小图,就直接一套全部适配就可以了。  


通过java代码动态适配应该是最准确的。。


手机分辨率和像素的转换

package com.itheima.mobilesafe.utils;

import android.content.Context;

public class DensityUtil {  
	  
    /** 
     * 根据手机的分辨率从 dip 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  
  
    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp==dip
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
}
对于不同分辨率,布局文件必要时要分包。

java代码适配

layout布局适配

weight权重比例适配

配置在配置文件中,配置文件根据分辨率分包

480*800的像素要放在mdpi这个文件夹下的原因:

mdpi的英寸为4.0英寸,根据计算,长为480px像素为2.058英寸,所以每英寸有233像素,而mdpi的像素是240,所以放在mdpi文件夹下

© 著作权归作者所有

下一篇: 9patch图形
chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
私信 提问
rem 以屏幕宽度做适配的时候出现的疑问

当我们以屏幕宽度做适配的时候,页面基于屏幕的宽度适配屏幕,在适配字体的时候就会问题,字体的高度相对于屏幕过高(使用rem为单位时)。 我们都知道 字体是以正方形出现在页面上的,设置字...

小鸟00
2018/08/27
122
2
ios新特性sizeclasses的应用,以及ios7的适配问题

4s屏幕的适配: 运用sizeclasses的过程中,在做4s屏幕适配的时候,可以使用约束关系中的大于小于等于三种关系适配,添加多条约束条件,并且给每个约束条件设置1000、750、250三种优先级,合理...

HillYoung
2015/03/04
921
0
Android适配全面总结(一)

前言 Android适配是一个老生常谈的问题,很多程序员觉得很恶心,不愿意做适配,但是又不得不做。然后老板说,这位兄弟,做好了,今天晚饭给你加个鸡腿,然后程序员开始找各种资料,忙活起来了...

阿韦爱Android
2017/11/14
0
0
Unity3D-关于项目的屏幕适配

觉得这篇文章不错,转过来分享给大家~ 原文链接: http://www.jianshu.com/p/95cb4621206e 1、游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适...

qq_26270779
2017/07/18
0
0
Android 适配问题汇总

适配问题的原因 根本原因 >由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,修改成他们想要的样子. 所以带来了碎片化的问题.随着平板,手表,电视等等的...

派赛克
2016/04/03
232
0

没有更多内容

加载失败,请刷新页面

加载更多

【运维】记一次上线前的紧急定位与修复-献上九条小经验

1 简介 本文介绍了作者所在团队在某次上线前测试发现问题、定位问题并修复上线的过程,最后给出几点经验总结,希望对大家有用。 2 过程 (1)今天需要上线,但昨晚才合并了所有分支,时间很紧...

南瓜慢说
37分钟前
4
0
Elasticsearch系列---初识Elasticsearch

Elasticsearch是什么? Elasticsearch简称ES,是一个基于Lucene构建的开源、分布式、Restful接口的全文搜索引擎,还是一个分布式文档数据库。天生就是分布式、高可用、可扩展的,可以在很短的...

清茶豆奶
49分钟前
3
0
服务安全之:JWT

JWT是JSON Web Tokens的缩写。既然叫JSON Web Tokens,所以JWT Tokens中真正包含的是多个JSON对象。为什么是多个JSON对象呢?因为SWT Token实际上是由三部分组成,其中有两部分是JSON格式。这...

popgis
今天
5
0
C++ Primer 笔记整理(一)基本语法介绍

C++被称为“完美的程序设计语言”,在chromium内核中应用非常广泛,之前没有系统学习过C++相关的知识,通过看书来学习相关的知识,现在将《C++ Primer》基本知识提取出来,供大家学习。 1.输...

天王盖地虎626
今天
2
0
你知道多少this,new,bind,call,apply?那我告诉你

那么什么是this,new,bind,call,apply呢?这些你都用过吗?掌握这些内容都是基础中的基础了。如果你不了解,那还不赶快去复习复习,上网查阅资料啥的! 通过call,apply,bind可以改变thi...

达达前端小酒馆
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部