Android万能分辨率适应法

来源:互联网 发布:windows手机恢复工具 编辑:程序博客网 时间:2024/06/11 20:46

Android开发中比较头疼的是Android的分辨率问题,那么这里给大家介绍个万能办法,这个办法的优点是可以实现万能适应,给开发和美工设计提供了依据,但是对开发来说代码量也不少,具体办法你听我来说:

1)获取屏幕的尺寸

1

WindowManager windowManager = (WindowManager)

2

        getSystemService(Context.WINDOW_SERVICE);

3

Display d = windowManager.getDefaultDisplay();

4

mWidth = d.getWidth();

5

mHeight = d.getHeight();

6

DisplayMetrics dm = getResources().getDisplayMetrics();

7

mScreenDensity = dm.density;

2)美工设计图的尺寸

1

uiWidth,uiHeight

3)获取缩放比例

1

float scaleWidth =mWidth / uiWidth;

2

float scaleHeight =mHeight/ uiHeight;

4)所有布局的尺寸用代码实现:

01

public static int getWidthSize(int size){

02

    return(int) (size *scaleWidth);

03

}

04

 

05

public static int getHightSize(int size){

06

    return(int) (size *scaleHeight);

07

}

08

 

09

public static float getTextSize(int pxSize){

10

    return(pxSize*scaleHeight) / mScreenDensity;

11

}

12

 

13

public static void setViewSize(int width, int height, View v){

14

    intparamWidth = getWidthSize(width);

15

    intparamHeight = getHightSize(height);

16

    ViewGroup.MarginLayoutParamsparams

17

           =(ViewGroup.MarginLayoutParams) v.getLayoutParams();

18

    if(width != INVALID){

19

        params.width= paramWidth;

20

    }

21

    if(height != INVALID){

22

        params.height= paramHeight;

23

    }

24

    v.setLayoutParams(params);

25

}

26

 

27

public static void setViewPadding(int left, int top, int right, int bottom,

28

        Viewv){

29

    left= getWidthSize(left);

30

    top= getHightSize(top);

31

    right= getWidthSize(right);

32

    bottom= getWidthSize(bottom);

33

    v.setPadding(left,top, right, bottom);

34

}

35

 

36

 

37

public static void setViewMargin(int left, int top, int right, int bottom,

38

        Viewv){

39

    intparamLeft = getWidthSize(left);

40

    intparamTop =  getHightSize(top);

41

    intparamRight = getWidthSize(right);

42

    intparamBottom = getHightSize(bottom);

43

    ViewGroup.MarginLayoutParamsparams = (ViewGroup.MarginLayoutParams)

44

                 v.getLayoutParams();

45

    if(left != INVALID){

46

        params.leftMargin= paramLeft;

47

    }

48

    if(right != INVALID){

49

        params.rightMargin= paramRight;

50

    }

51

    if(top != INVALID){

52

        params.topMargin= paramTop;

53

    }

54

    if(bottom != INVALID){

55

        params.bottomMargin= paramBottom;

56

    }

57

    v.setLayoutParams(params);

58

}

   5)这里是设置尺寸的代码:

1

setViewSize(100, 100, mView);

2

setViewMargin(20, 0, 0,20, mView);

3

setViewPadding(10, 10, 10,10, mView);

4

mTextView.setTextSize(getTextSize(30));

   由上在设计效果图时,可对图内元素进行尺寸标注,程序即可实现按比例缩放。

0 0