设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?

本文链接    http://blog.csdn.net/xiaodongrush/article/details/29560431

1. 要开发一款Android APP,设计师和开发要约定哪些事情?

首先,选择一款主流机型。

然后,设计师根据该机型的屏幕尺寸设计效果图,给出px单位的标注。

最后,开发根据该机型,可以算出px与dp的换算方法,根据px单位的标注,设置为dp为单位的标注。

备注:1dp=1dip=1sp,对于一般长宽dp或者dip都可以,sp是字体专用单位,在操作系统中设置大中小号字体后,可以改变sp的显示大小。

这样做可以保证在这款机型上,设计师的设计完全表现。对于其他机型,只要尺寸相差不是很大,显示效果相差不会太大。如果是在手机上设计,在pad上显示,相差就会比较大了。

2. 举例说明

假设选择GalaxyNexus作为开发的目标机型。

该机型的屏幕尺寸是720x1280。设计师在720x1280的画布上进行设计。

根据计算公式,得知Galaxy Nexus上面,1dip=1dp=1sp=2px。所以对于40px的标注,开发需要给出20dip设置即可。

换算代码如下,参考自http://www.imyukin.com/?p=277

public static int dip2px(Context context, float dipValue){
    final float scale = context.getResources().getDisplayMetrics().density;
    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);
}

3. 没办法保证不同设备之间的完全适配

http://su1216.iteye.com/blog/1569029,这篇讲的不错,只有当手机A的屏幕密度/手机B的屏幕密度=手机A的屏幕宽度/手机B的屏幕宽度的时候,A手机上设置的dip,sp,dp单位到了B手机上,才能实现等比缩放。这个条件太苛刻了,所以不可能有完全的适配。

4. 不能做到完全适配,还能做些什么

既然绝对长度在不同手机之间不能完全适配,那么就减少使用绝对长度的机会。

比如:一行只有一个很长的按钮,就不要用设置按钮的长度,因为不同手机上,按钮长度显示出不一样,有的手机上显示正常,在其他手机上可能就会显得距离屏幕两边很近,甚至超出屏幕。最好是设置按钮为match_parent,设置左右边距。这样不同手机上,边距都是一样的。

5. UI适配其他方面的事情

    本文主要是说一下标注转化的实际中怎么用的问题,UI适配还有很多地方要注意。比如:组件背景中常用9-patch,线性布局与相对布局,多种密度图片drawable-hdpi、drawable-ldpi和drawable-mdpi等。

9-patch图片就是注意左边和下边的黑线控制缩放区域,右边和上边的黑线控制内容区域,很多人容易忽视内容区域。相对布局的用法还是比较多的,这里不展开了。多种分辨率图片,一般没条件切那么多图的话,给drawable-hdpi也就够了,多准备几款测试手机,看看效果比较重要。

设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?

时间: 2024-08-21 20:47:43

设计师给了px单位的标注,Android开发到底要设置多少dip、dp、sp?的相关文章

Android - 开发页面需了解的dip,sp,px知识,以及它们之间的转换

工作中,时常会有任务要求开发新页面,这时一般的流程是产品经理确定要开发的页面和功能,然后设计师提供设计稿,之后由我们开发人员完成开发工作. 通常,设计师提供的设计稿尺寸标注会很详细,例如涉及到字时,字的大小,位置,颜色,字体等,都会一一标注.这时注意的是,设计师提供的尺寸标注全部是px(像素)为单位. 但我们在开发时不能直接使用px,按照Android规范,间距需使用dip(dp),字体大小需使用sp. 这时就需要我们做出px与dip(dp),sp的转换. 一. 了解dip(dp),sp,px

android布局单位dip dp sp px

android布局常用单位有dip.dp.sp.px. dip/dp 表示密度无关像素(density-independent pixel),是基于屏幕物理密度的抽象单元.dp是相对一个160dpi密度的屏幕来讲的,所以在160dpi密度的屏幕里1个dp表示一个像素.屏幕密度高单位dp对应像素值高,屏幕密度低单位dp对应像素值低.也就是说不同密度的屏幕,单位dp对应的像素值也不一样.但记住一点就行,无论哪种密度,1个dp在屏幕上总是表示1/160英寸,从而保证不同屏幕上dp总能表示相同的尺寸.

【转】Android中的长度单位详解(dp,sp,px,in,pt,mm)

原帖地址:http://blog.csdn.net/nokiaguy/article/details/5509638 原帖作者:geekguy 看到有很多网友不太理解dp.sp和px的区别:现在这里介绍一下dp和sp.dp也就是dip.这个和sp基本类似.如果设置表示长度.高度等属性时可以使用dp 或sp.但如果设置字体,需要使用sp.dp是与密度无关,sp除了与密度无关外,还与scale无关.如果屏幕密度为160,这时dp和sp和px是一 样的.1dp=1sp=1px,但如果使用px作单位,如

Android开发之动态设置字体的样式和粗细

字体设置通常有两种形式: 1:在xml中直接设置 android:textStyle="bold" android:typeface="sans" 2:用java代码的形式设置 在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置斜体: TextView quehuo = (TextView)findViewById(R.id.quehuo);//为TextView显示的字体设置样式 quehuo.setTypefac

Android(java)学习笔记163:Android开发时候颜色设置是bgr不是rgb

android颜色是bgr ,所以我们通常设置是rgb="#99ebe5"  ,在android设置为"#e5eb99" android:background ="#e5eb99" 

android开发不同字体设置

开发中控制不同的文字字体主要是对Typeface对象的使用 因为是简单的demo,都是使用android原生的组件,虽丑,可以学到东西就ok啦!(若有错误或者不足,请各位不吝赐教,谢谢!) 先看看简单运行的效果吧 即设置俩个button,一个textView,点击不同的按钮时,触发不同的事件.直接上代码 MainActivity.java 1 public class MainActivity extends Activity implements OnClickListener { 2 3 p

Android 屏幕适配方案(包含生成程序dp sp与解决方案)

看之前希望先看: http://blog.csdn.net/zhaokaiqiang1992/article/details/45419023 此方案是看完上面的了博客总结出来的 方案1与方案2兼容~ 因为都是x? y? font?为名称 方案1: //values-xhdpi.. Dp的适配 与 values-xhdpi.. Sp的适配 这种适合 默认的那种 要是想非常精确 就考虑额外添加下面那个 的方案 按照以上计算方式,大致可以将市场上的手机划分为5个像素密度等级,具体如下: (1) ld

android开发通知常用设置方法

简单记录 通知上的设置方法,没有示例 //进度 通知 notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); builder = new NotificationCompat.Builder(context); builder.setContentTitle("新版本")//显示的标题 .setContentText("正在下载...

Android开发之字体设置

默认字体 Android SDK自带了四种字体:"normal"“monospace",“sans”, “serif”,如下: 字体 看这四兄弟长的还是蛮像,我是看不出多大差别... 设置方式 1.通过XML文件设置 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="monosp