精华内容
下载资源
问答
  • 计算自己手机的屏幕宽高,density,px 宽高,dp 的宽高,及px 和dp互转的科普
  • 计算自己手机的屏幕宽高,density,px 宽高,dp 的宽高,及px 和dp互转的科普.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 一种非常好用的Android屏幕适配 系统提供的dp2px方法: ... * dp转px * @param dpValue * @return */ public int dp2px(int dpValue){ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNI...

    一种非常好用的Android屏幕适配
    系统提供的dp2px方法:

     /**
         * dp转px
         * @param dpValue
         * @return
         */
        public int dp2px(int dpValue){
            return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dpValue,getResources().getDisplayMetrics());
        }
    
      /* 字体大小 sp转px
         */
        fun sp2px(sp: Float): Int {
            val scaledDensity = context.resources.displayMetrics.scaledDensity
            return (sp * scaledDensity + 0.5f).toInt()
        }
    
     val dp2px = SystemUtil.dp2px(context, 13)
                    Log.e(">>>>>>>>>>>>", "dp2px:$dp2px")
                    Log.e(">>>>>>>>>>>>", "dp2px:${dp2px.toFloat()}")
                    Log.e(">>>>>>>>>>>>", "mCircleRedius:$mCircleRedius")
                    //画索引的背景
                    canvas.drawCircle(x + dimension, y - dimension,dp2px.toFloat(), mPaint)
    

    打印的日志如下:

    E/>>>>>>>>>>>>: dp2px:26
    E/>>>>>>>>>>>>: dp2px:26.0
     E/>>>>>>>>>>>>: mCircleRedius:14.0
     E/>>>>>>>>>>>>: dp2px:26
    

    正常的圆的直径是13dp,但是发现用dp2px的适配的方式会直接半径翻倍,在160dp是正常显示的,但是在320dp(7201280)手机上显示是26dp,在10801920的手机显示是39dp,导致显示错误。所以我们需要明白虽然drawCircle(x + dimension, y - dimension,dp2px.toFloat(), mPaint)方法接受的是半径,但是你的Ui图如果是在7201280也就是宽320dp,高为640dp的手机上做的图,那么这里的直径就应该改成半径为 6.5,因为屏幕适配会根据屏幕密度找到对应的dp值,320dp是乘以6.52 =13,640是乘以6.5*3=19.5.否则显示就会出现问题。
    如果你忘记了适配手机,直接使用下面代码画一个半径为13的圆:

     canvas.drawCircle(x + dimension, y - dimension,13, mPaint)
    

    你会发现程序跑在320*640的手机上是正常的,因为屏幕适配,13px在320的手机上转成dp正好就是6.5dp,也就是画圆需要的半径,所以显示正常。

    展开全文
  • 指的是Android会识别屏幕可用高度和宽度的最小尺寸的dp值(其实就是手机的宽度值),然后根据识别到的结果去资源文件中寻找对应限定符的文件夹下的资源文件。 效果图展示 LICENSE Copyright 2018 Vension Licensed ...
  • 将px转换成dp,暂时只支持标准手机设备的转换(hdpi,xhdpi,xxhdpi,520dpi)
  • 这是一个困扰我很就得问题。今天在我的反复摸索下,总结...手机参数:5.5英寸;高:1920;宽1080. /** * 获得屏幕的宽度 * * @param context * @return */ public static int getScreenWidth(Contex...

    这是一个困扰我很就得问题。今天在我的反复摸索下,总结出了一些个规律。

    以下测试以魅族mx5为例。

    手机参数:5.5英寸;高:1920;宽1080.

    /**
         * 获得屏幕的宽度
         * 
         * @param context
         * @return
         */
        public static int getScreenWidth(Context context) {
            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            return (int)(displayMetrics.widthPixels/displayMetrics.density);
        }
        /**
         * 获得屏幕的高度
         * @param context
         * @return
         */
        public static int getScreenHeight(Context context) {
            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            return (int)(displayMetrics.heightPixels/displayMetrics.density);
        }
        
        /**
         * 获得屏幕的像素宽度
         * @param context
         * @return
         */
        public static int getScreenWidthPx(Context context) {
            DisplayMetrics dm = new DisplayMetrics();
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(dm);
            return dm.widthPixels;
        }
        
        /**
         * 获得屏幕的像素高度
         * @param context
         * @return
         */
        public static int getScreenHeightPx(Context context) {
            DisplayMetrics dm = new DisplayMetrics();
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(dm);
            return dm.heightPixels;
        }

    执行各个方法,打印log,得到的数值:

    02-29 19:59:09.411: E/InsertADActivity(23228): getScreenHeight:640 getScreenWidth:360

    02-29 19:59:09.412: E/InsertADActivity(23228): getScreenHeightPx:1920 getScreenWidthPx:1080

        /**
         * 获取屏幕的密度
         */
        public static float getdensity(Context context) {
            DisplayMetrics dm = new DisplayMetrics();
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(dm);
            LogUtil.e("getdensity", "dm.density:"+dm.density+" dm.densityDpi"+dm.densityDpi);
            return dm.density;
        }

     

    02-29 20:01:56.685: E/getdensity(23228): dm.density:3.0 dm.densityDpi480

        if (relativeLayout.getParent()!=null) {
                ((ViewGroup) relativeLayout.getParent()).removeView(relativeLayout);
            }
            insertAdDialog = new AlertDialog.Builder(mActivity).setView(relativeLayout).create();
            insertAdDialog.setCanceledOnTouchOutside(false);
            insertAdDialog.show();
             WindowManager.LayoutParams p = insertAdDialog.getWindow().getAttributes(); // 获取对话框当前的参数值
             p.height = (int) (DeviceInfo.getScreenHeightPx(mActivity)); 
             p.width = (int) (DeviceInfo.getScreenWidthPx(mActivity)); 
             insertAdDialog.getWindow().setAttributes(p);

    当这样设置时,dialog充满屏幕。

     

    转载于:https://www.cnblogs.com/bigthing33/p/5228762.html

    展开全文
  • 平时在xml里书写控件大小时,我们习惯于使用dp值,但是,如果使用Java代码书写控件:WindowManager.LayoutParams layoutParams =getWindow().getAttributes();layoutParams.height= 200;layoutParams.width= 200;...

    平时在xml里书写控件大小时,我们习惯于使用dp值,但是,如果使用Java代码书写控件:

    WindowManager.LayoutParams layoutParams =

    getWindow().getAttributes();

    layoutParams.height= 200;

    layoutParams.width= 200;

    getWindow().setAttributes(layoutParams);

    运行的结果并不是我们预期的大小,这是因为在LayoutParams使用的参数单位是pixels。

    不可避免的就需要我们转换dp 到 pixels 。

    转换的函数如下:

    private int getPixelsFromDp(int size){

    DisplayMetrics metrics =new DisplayMetrics();

    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    return(size * metrics.densityDpi) /

    DisplayMetrics.DENSITY_DEFAULT;

    }

    首先查看官方文档,DisplayMetrics是安卓提供的封装像素密度以及大小信息的类。前两行代码是对他的初始化。当获取了当前手机的手机密度信息后根据下面的公式。

    px = dp * (dpi / 160)

    只需要计算它和默认像素密度的比值乘以像素就是我们常用的dp值了。

    其中 DisplayMetrics.DENSITY_DEFAULT 的值就是160

    展开全文
  • 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好了,答案为\(work(R)-work(L-1)\) ...

    [CQOI2016]手机号码

    用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好了,答案为\(work(R)-work(L-1)\)

    #include <cstdio>
    #include <cstring>
    #define DP dp[p][a][b][hav_same][hav8][hav4][limited]
    #define ll long long
    using namespace std;
    ll dp[14][11][11][2][2][2][2];
    int num[14];
    ll solve(int p, int a, int b, bool hav_same, bool hav8, bool hav4, bool limited){
        //当前第p位,前2位为a,前1位为b,hav_same:是否有三个连续相等的,hav_8,hav_4:是否存在数字8\4,是否限制取数范围
        if(hav4&&hav8) return 0;
        if(p<=0) return hav_same;
        if(DP!=-1) return DP;
        ll ans=0;
        int maxnum=(limited?num[p]:9);
        for(int i=0;i<=maxnum;++i)
            ans+=solve(p-1, b, i, hav_same||(i==a&&i==b), hav8||(i==8), hav4||(i==4), limited&&(i==maxnum));
        return DP=ans;
    }
    ll work(ll x){
        if(x<1e10) return 0;
        memset(dp, -1, sizeof(dp));
        int len;
        for(len=0;x;x/=10) num[++len]=x%10;
        ll ans=0;
        for(int i=num[len];i>=1;--i)
            ans+=solve(11-1, -1, i, 0, i==8, i==4, i==num[len]);
        return ans;
    }
    int main(){
        ll l,r;
        scanf("%lld %lld", &l, &r);
        printf("%lld\n", work(r)-work(l-1));
        return 0;
    }

    转载于:https://www.cnblogs.com/santiego/p/11185422.html

    展开全文
  • 1.直接上代码 public class ScreenManager { ... * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public static int dipToPx(Context context, float dpValue) { final float scale = context.get...
  • 又是一道裸的数位DP,只不过状态有点多(小萌新表示看着好晕) warn限制最大。last,llast枚举上一位、上上一位的数值。d4,d8分别表示4与8是否出现过。tri表示前面状态是否存在三连数,最后到达边界时只有合法...
  • android 手机适配之values适配dimen

    千次阅读 2016-08-03 16:47:45
    但是我在阅读的时候还是有点疑问,这个values-1920x1080到底是dp值还是手机分辨率,因为我在实际操作中发现这样一句话. 很明显可以看到在我写的1920 * 1080上方有一句话 Screen dimension in dp ,
  • 关于dp使用!

    2020-12-01 14:18:32
    <img alt="image" src="https://user-images.githubusercontent.com/17778482/33872775-31d769a8-df53-11e7-97e2-ef6950464df2.png" /> 图中椭圆处以dp为单位 生成相应的dp值这样实用就大了</p><p>该提问来源于开源...
  • 数位dp

    2019-10-07 16:15:32
    从高位枚举到低位,如果这一位与原数的同一位不同,且满足上限的限制,则后面可以随便填,可以用f数组来储存这个,这也是为什么记忆化搜索时需要判断(! limit) 数位dp一般用记忆化搜索来实现,方便快捷。 f数组...
  • 关于UI标注px于TextView中dp的误解

    千次阅读 2014-12-04 11:21:18
    在与视觉配合开发的关于文本大小给的都是px,我们做Layout布局的时候为了适配都会转化为dp来使用。习惯上都是讲 px / 2 = dp。 而手机上TextView上下还有一定的Font Padding,px与 dp 不是除2关系。如果还是不清楚...
  • 曾经在处理图片过程中遇到这样一个情况:小米大屏手机上各种友好展示,但是在三星手机...这时我们需要把dp值转换成px。 注意了:是把dp值转为px,我就在这失误了。不说了,直接上实现: public class DisplayUtils {
  • 其实用dp也可以标注字体大小,但是用dp标注字体的大小不会随手机字体大小调整变化. px:像素 dpi:每英寸的点数,也称像素密度,即对角线像素除以对角线英寸 dp/dip:每英寸如果包含160个像素点时,则1个像素点...
  • 手机为例,一般宽度介于320到411dp之间,布局必须能适应320到411dp之间的任何宽度,这就是开发要面对的适配问题。 给不同xxxxdpi的文件夹放对应的资源文件。 今日头条等3方库,效果看起来都不错,我理解是现在...
  • android:px,dp(dip),sp的区别

    千次阅读 2016-02-14 14:37:39
    1.px:表示屏幕的实际像素,例如320*480的屏幕在横向有320...可以理解为可以变换的。在不同的分辨率下会通过一定的算法转换成px单位在手机上显示出来。这样可以起到屏幕适配的作用。推荐使用。 3.sp:和dp类似,只不过
  • 如果想在不同型号手机对同一个应用做适配,如果你在xml中全部使用dp没有使用px,那么适配上依然很有可能出问题! 无数人存在误区,认为自己使用的都是dp,为什么在手机A上面和手机B上面看上去比例不一样,为什么...
  • Android px、dp梳理

    2017-11-06 10:26:03
    Android px与dp的关系梳理一下,也不说理论了,直接上干货 屏幕初步总结。 一、目前手机屏幕像素密度基本有5种情况。(以下像素密度简称密度)  密度 ldpi mdpi hdpi xhdpi xxhdpi 密度 120 160 240...
  • mkdocs-dp-material-源码

    2021-03-09 07:13:57
    一个演示一千个单词,请在。 特征 这只是Markdown ... –用Markdown写技术文档–无需了解HTML,JavaScript或CSS。 MkDocs的DP Material将承担繁重的工作,并创建一个美观而实用的网站。 ...还有更多功能-与...
  • 挂饰(dp

    2019-07-18 20:32:03
    题目描述 JOI 君有N个装在手机上的挂饰,编号为1…N 。 JOI 君可以将其中一些挂饰装在手机上。...此外,每个挂件有一个安装时会获得的喜悦,用一个整数来表示。如果 JOI 君很讨厌某个挂饰,那么...
  • 英寸:2.45cm。 dpi:每英寸的点数,也称像素密度,即屏幕对角线...不一样的,所以dp的出现可以让控件布局出现在不同手机屏幕上而不失真。 sp: 字体使用的大小单位,系统字体缩放时,用sp作为字体单位的字体也会...
  • * 根据手机的分辨率从 dp 的单位 转成为 px(像素) * * @param context 上下文 * @param dpValue 需要转换的dp * @return int 类型的像素 */ public static int dp2px(Context context, float...
  • 但是实际上要达到px设计图的布局效果,这个dp值要设置得更大一点大概是67dp左右 ========================进一步环境分析=============================== 我发现这个问题用的是小米2手机。研究过计算过,...
  • dp、dpi、px的区别?

    千次阅读 2019-02-20 15:51:51
    参考回答: px:像素,如分辨率1920x1080表示高为1920个像素、宽为1080个像素 dpi:每英寸的像素点,如分辨率为1920x1080的手机尺寸为5英寸,则该手机DPI为(1920x1920+ 1080x...dp:密度无关像素,是个相对 ...
  • android用dp还是sp还是px等

    千次阅读 2015-07-31 22:13:39
    总结:安卓开发中经常用dp设置边距或内边距等,用sp设置字体dp是density-independent pixel的...Android在运行时会根据手机的密度高低将其转化为像素单位。 sp是scale-independent pixel的缩写,表示缩放无关像素。
  • 对于Android Density 的理解(dp sp pix) 在Android系统开发过程...手机屏幕的像素密度取决于不同的手机本身,其余手机的尺寸以及像素有关 手机像素密度计算 每一英寸(2.54厘米)像素点的数目被定义为像素...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 177
精华内容 70
热门标签
关键字:

手机dp值