zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    emacs 探索之六:latex中文支持
    One网络模拟器探索之六:Report类的扩展
    emacs 探索之五:latex配置
    emacs 探索之三:基本操作
    DataSet数据传送性能比较
    SQL 2008 附加数据库报5120的错误的解决办法
    软件工程师不可不知的10个概念
    在日期上加上相应天数,并在GridView上显示
    SQL 跨表更新
    SQLSERVER 处理两个日期相减
  • 原文地址:https://www.cnblogs.com/vijay/p/3740792.html
Copyright © 2011-2022 走看看