• Android万能分辨率适应法


    (1)获取屏幕的尺寸

    WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    Display d = windowManager.getDefaultDisplay();
    mWidth = d.getWidth();
    mHeight = d.getHeight();
    DisplayMetrics dm = getResources().getDisplayMetrics();
    mScreenDensity = dm.density;
    
    
    
    

    (2)美工设计图的尺寸

    uiWidth,uiHeight

    (3)获取缩放比例

    float scaleWidth = mWidth / uiWidth;
    float scaleHeight = mHeight/ uiHeight; 

    (4)全部布局的尺寸用代码实现

    public static int getWidthSize(int size){
        return (int) (size * scaleWidth);
    }
    
    public static int getHightSize(int size){
        return (int) (size * scaleHeight);
    }
    
    public static float getTextSize(int pxSize){
        return (pxSize*scaleHeight) / mScreenDensity;
    }
    
    public static void setViewSize(int width, int height, View v){
        int paramWidth = getWidthSize(width);
        int paramHeight = getHightSize(height);
        ViewGroup.MarginLayoutParams params 
               = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        if (width != INVALID){
            params.width = paramWidth;
        }
        if (height != INVALID){
            params.height = paramHeight;
        }
        v.setLayoutParams(params);
    }
    
    public static void setViewPadding(int left, int top, int right, int bottom,
            View v){
        left = getWidthSize(left);
        top = getHightSize(top);
        right = getWidthSize(right);
        bottom = getWidthSize(bottom);
        v.setPadding(left, top, right, bottom);
    }
    
    
    public static void setViewMargin(int left, int top, int right, int bottom,
            View v){
        int paramLeft = getWidthSize(left);
        int paramTop =  getHightSize(top);
        int paramRight = getWidthSize(right);
        int paramBottom = getHightSize(bottom);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)
                     v.getLayoutParams();
        if (left != INVALID){
            params.leftMargin = paramLeft;
        }
        if (right != INVALID){
            params.rightMargin = paramRight;
        }
        if (top != INVALID){
            params.topMargin = paramTop;
        }
        if (bottom != INVALID){
            params.bottomMargin = paramBottom;
        }
        v.setLayoutParams(params);
    }





  • 相关阅读:
    【转】Testing, Thought, and Observations
    【转】Yet another software testing pyramid
    【转】Automated Testing and the Test Pyramid
    Environment setting up troubleshoot.
    [转] Spring相关
    流水账
    Abbreviation
    chrome中文本框样式问题
    Intellij IDEA 使用总结
    限制
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4049406.html
Copyright © 2020-2023  润新知