皮皮网

皮皮网

【脚本有源码和无源码的区别】【centos源码编译】【android源码.jar】dip 源码

时间:2024-11-26 22:19:21 分类:百科

1.新手Android中px=dp*(dpi/160)的解释
2.-60.0dip代码中的-代表什么
3.软件设计原则
4.Android中dip,dp,sp,pt和px的区别详解

dip 源码

新手Android中px=dp*(dpi/160)的解释

       在dpi的手机上1px=1dp,这句话的以上是说 ,手机屏幕宽带被分割成了块,每一块有一个像素点,每一块就是一个dp。  那么1dp=1px

       而dpi的手机上,分辨率是脚本有源码和无源码的区别上一个手机的两倍,手机屏幕宽带也被分割成了块,每一块有两个像素点,每一块也是一个dp,那么1dp=2px

       上面分析来自于android学习手册,手机助手中可以下载,里面有个android例子,源码文档都可在里面看,centos源码编译下面是截图

       下面是dp与px的转换公式,也来自android学习手册,经常使用。

import android.content.Context;  

         

       public class DensityUtil {   

         

           /** 

            * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 

            */  

           public static int dip2px(Context context, float dpValue) {   

               final float scale = context.getResources().getDisplayMetrics().density;  

               return (int) (dpValue * scale + 0.5f);  

           }  

         

           /** 

            * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 

            */  

           public static int px2dip(Context context, float pxValue) {   

               final float scale = context.getResources().getDisplayMetrics().density;  

               return (int) (pxValue / scale + 0.5f);  

           }  

       }

-.0dip代码中的-代表什么

       marginBottom 正值是 增大 与下面空间的距离,负值为减少距离 也就那意思,建议看源码。比如你的设备分辨率是x,里面放个TextView marginTop是-dip,那么你的textView就会显示

软件设计原则

       软件设计七大原则概述:

       软件设计包含两大一般性原则:YAGNI(你不会需要它)和两个核心原则:开闭原则(Open Close Principle, OCP)和依赖倒置原则(Dependence Inversion Principle, DIP)。

       开闭原则(OCP)强调模块的扩展开放,修改封闭。android源码.jar它包含两个关键特性:模块的行为可扩展以满足需求,源代码不可修改。通过避免修改现有代码,OCP确保了系统的稳定性和复用性。改进设计引入了动态变化,例如价格策略的云台 源码处理,通过引入关联类(PricePolicy)实现。

       依赖倒置原则(DIP)主张依赖抽象而非具体实现,确保了系统的稳定性和可维护性。这类似于物理中的稳定系统,其中基础的稳定性决定了整体的稳定性。

       单一职责原则(SRP)强调一个类只能有一个职责。编辑html源码通过将Modem设计拆分为Connnection和DataChannel,避免了类中多个职责的复杂性,提高了系统可维护性。

       接口隔离原则(ISP)强调使用接口继承而非实现继承,通过接口只暴露必要操作,隐藏不相关操作。这样,客户端只需关注其需要的部分,提高了系统的灵活性和可维护性。

       迪米特法则(LoD)强调对象间最少的了解,减少类间的耦合。通过限制成员朋友类的了解,实现了低耦合的设计。

       里氏替换原则(LSP)确保子类可以替换父类,且程序行为不变。这要求子类遵循父类的前置和后置条件,避免添加额外限制,保证了继承的合理性。

       CARP(Composite/Aggregate Reuse Principle)强调使用合成/聚合实现对象间的重用,避免多重继承带来的问题。通过聚合和组合,实现对象间的独立性,降低了类间的耦合度。

       遵循这些原则,可以构建灵活、可扩展和易于维护的软件系统,提高代码质量,减少错误和复杂性。

Android中dip,dp,sp,pt和px的区别详解

       è¿‡åŽ»ï¼Œç¨‹åºå‘˜é€šå¸¸ä»¥åƒç´ ä¸ºå•ä½è®¾è®¡è®¡ç®—机用户界面。例如:图片大小为×像素。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。由此我们采用与分辨率无关的度量单位来开发程序就能够解决这个问题。Android应用开发支持不同的度量单位。

       åº¦é‡å•ä½å«ä¹‰

       dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

       dp: dip是一样的

       px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表x像素,这个用的比较多。

       pt: point,是一个标准的长度单位,1pt=1/英寸,用于印刷业,非常简单易用;

       sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

       in(英寸):长度单位。

       mm(毫米):长度单位。

       åº¦é‡å•ä½çš„换算公式

       åœ¨android源码包TypedValue.java中,我们看如下函数:

       ä»£ç å¦‚下:

        public static float applyDimension(int unit, float value,

        DisplayMetrics metrics)

        {

        switch (unit) {

        case COMPLEX_UNIT_PX:

        return value;

        case COMPLEX_UNIT_DIP:

        return value * metrics.density;

        case COMPLEX_UNIT_SP:

        return value * metrics.scaledDensity;

        case COMPLEX_UNIT_PT:

        return value * metrics.xdpi * (1.0f/);

        case COMPLEX_UNIT_IN:

        return value * metrics.xdpi;

        case COMPLEX_UNIT_MM:

        return value * metrics.xdpi * (1.0f/.4f);

        }

        return 0;

        }

        该函数功能:是把各单位换算为像素。

        metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

        metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

        metrics.xdpi:默认值为DENSITY_DEVICE;

        DENSITY_DEVICE:为屏幕密度

        DENSITY_DEFAULT:默认值为

       å±å¹•å¯†åº¦ï¼šè¡¨ç¤ºæ¯è‹±å¯¸æœ‰å¤šå°‘个显示点,与分辨率是两个不同的概念。

       æ®px = dip * density / ,则当屏幕密度为时,px = dip

       æ ¹æ® google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知Android默认使用sp作为字号单位。将dip作为其他元素的单位。