美文网首页
屏幕适配

屏幕适配

作者: 一只叫董董的程序猿 | 来源:发表于2017-12-04 15:55 被阅读0次

    此文章只是个人笔记,未完待补
    首先感谢大神文章m.blog.csdn.net/fesdgasdgasdg/article/details/52325590
    1、使用适配时需要注意使用屏幕的实际分辨率,部分带虚拟键盘的手机的分辨率会比真实分辨率小
    2、使用px做百分比适配可能会因为1原因导致适配失败,需要做的文件夹太多
    3、选择dp的百分比方案做适配。以一种dp值为基础,大部分基于360dp,做dp百分比适配
    4、图片适配,选择xhdpi图片,此屏幕密度下的图片可以适配多种不同密度机型,不会严重拉扯。
    5、图片适配,找图先找对应手机dpi密度下的文件,如果没找到会向高密度找,找到原图尺寸会自动缩小, 如果还没找到会向下继续找,找到会自动放大
    6、Values-w320dp和values-sw320dp区别。横屏时宽度变为原来的高度,sw会限制所有宽度为320,区别就是横竖屏时候限制

    image
    *获取屏幕的宽
    *
    * @param activity
    * @return
    */
    public static float getWith(Activity activity) {
    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
    int width = metric.widthPixels;
    return width;
    }
    
    /**
    *获取屏幕的高
    *
    * @param activity
    * @return
    */
    public static float getHeight(Activity activity) {
    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
    int heightPixels = metric.heightPixels;
    return heightPixels;
    }
    
    /**
    *获取屏幕真实的宽
    *
    * @param activity
    * @return
    */
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    public static float getRealWith(Activity activity) {
    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getRealMetrics(metric);
    int width = metric.widthPixels;
    return width;
    }
    
    /**
    *获取屏幕真实的高
    *
    * @param activity
    * @return
    */
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    public static float getRealHeight(Activity activity) {
    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getRealMetrics(metric);
    int heightPixels = metric.heightPixels;
    return heightPixels;
    }
    
    /**
    *获得屏幕宽度的dp值
    */
    public static float getDp(Activity activity) {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int widthPixels = displayMetrics.widthPixels;
    float density = displayMetrics.densityDpi;//获取屏幕dpi
    float dp = widthPixels * 160 / density;
    return dp;
    }
    
    /**
    *获取屏幕的dpi
    *
    * @param activity
    * @return
    */
    public static float getScreenDensity(Activity activity) {
    DisplayMetrics metric = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
    float density = metric.densityDpi;
    return density;
    }
    

    dp=width*160/dpi

    相关文章

      网友评论

          本文标题:屏幕适配

          本文链接:https://www.haomeiwen.com/subject/xdexixtx.html