Skip to content

Commit 629ce2d

Browse files
author
hongyangAndroid
committed
增加autoutils 部分辅助方法
1 parent 640d6a2 commit 629ce2d

29 files changed

+611
-106
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ dependencies {
5959

6060
```
6161
dependencies {
62-
compile 'com.zhy:autolayout:1.3.8'
62+
compile 'com.zhy:autolayout:1.4.1'
6363
}
6464
```
6565

autolayout/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22
apply plugin: 'com.github.dcendents.android-maven'
33
apply plugin: 'com.jfrog.bintray'
44

5-
version = "1.3.9"
5+
version = "1.4.1"
66

77
android {
88
compileSdkVersion 23

autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,30 @@
11
package com.zhy.autolayout;
22

33
import android.view.View;
4+
import android.view.ViewGroup;
5+
import android.widget.TextView;
46

7+
import com.zhy.autolayout.attr.Attrs;
58
import com.zhy.autolayout.attr.AutoAttr;
9+
import com.zhy.autolayout.attr.HeightAttr;
10+
import com.zhy.autolayout.attr.MarginBottomAttr;
11+
import com.zhy.autolayout.attr.MarginLeftAttr;
12+
import com.zhy.autolayout.attr.MarginRightAttr;
13+
import com.zhy.autolayout.attr.MarginTopAttr;
14+
import com.zhy.autolayout.attr.MaxHeightAttr;
15+
import com.zhy.autolayout.attr.MaxWidthAttr;
16+
import com.zhy.autolayout.attr.MinHeightAttr;
17+
import com.zhy.autolayout.attr.MinWidthAttr;
18+
import com.zhy.autolayout.attr.TextSizeAttr;
19+
import com.zhy.autolayout.attr.WidthAttr;
620

721
import java.util.ArrayList;
822
import java.util.List;
923

1024
public class AutoLayoutInfo
1125
{
1226
private List<AutoAttr> autoAttrs = new ArrayList<>();
27+
1328
public void addAttr(AutoAttr autoAttr)
1429
{
1530
autoAttrs.add(autoAttr);
@@ -24,6 +39,108 @@ public void fillAttrs(View view)
2439
}
2540
}
2641

42+
43+
public static AutoLayoutInfo getAttrFromView(View view, int attrs, int base)
44+
{
45+
ViewGroup.LayoutParams params = view.getLayoutParams();
46+
if (params == null) return null;
47+
AutoLayoutInfo autoLayoutInfo = new AutoLayoutInfo();
48+
49+
// width & height
50+
if ((attrs & Attrs.WIDTH) != 0 && params.width > 0)
51+
{
52+
autoLayoutInfo.addAttr(WidthAttr.generate(params.width, base));
53+
}
54+
55+
if ((attrs & Attrs.HEIGHT) != 0 && params.height > 0)
56+
{
57+
autoLayoutInfo.addAttr(HeightAttr.generate(params.height, base));
58+
}
59+
60+
//margin
61+
if (params instanceof ViewGroup.MarginLayoutParams)
62+
{
63+
if ((attrs & Attrs.MARGIN) != 0)
64+
{
65+
autoLayoutInfo.addAttr(MarginLeftAttr.generate(((ViewGroup.MarginLayoutParams) params).leftMargin, base));
66+
autoLayoutInfo.addAttr(MarginTopAttr.generate(((ViewGroup.MarginLayoutParams) params).topMargin, base));
67+
autoLayoutInfo.addAttr(MarginRightAttr.generate(((ViewGroup.MarginLayoutParams) params).rightMargin, base));
68+
autoLayoutInfo.addAttr(MarginBottomAttr.generate(((ViewGroup.MarginLayoutParams) params).bottomMargin, base));
69+
}
70+
if ((attrs & Attrs.MARGIN_LEFT) != 0)
71+
{
72+
autoLayoutInfo.addAttr(MarginLeftAttr.generate(((ViewGroup.MarginLayoutParams) params).leftMargin, base));
73+
}
74+
if ((attrs & Attrs.MARGIN_TOP) != 0)
75+
{
76+
autoLayoutInfo.addAttr(MarginTopAttr.generate(((ViewGroup.MarginLayoutParams) params).topMargin, base));
77+
}
78+
if ((attrs & Attrs.MARGIN_RIGHT) != 0)
79+
{
80+
autoLayoutInfo.addAttr(MarginRightAttr.generate(((ViewGroup.MarginLayoutParams) params).rightMargin, base));
81+
}
82+
if ((attrs & Attrs.MARGIN_BOTTOM) != 0)
83+
{
84+
autoLayoutInfo.addAttr(MarginBottomAttr.generate(((ViewGroup.MarginLayoutParams) params).bottomMargin, base));
85+
}
86+
}
87+
88+
//padding
89+
if ((attrs & Attrs.PADDING) != 0)
90+
{
91+
autoLayoutInfo.addAttr(MarginLeftAttr.generate(view.getPaddingLeft(), base));
92+
autoLayoutInfo.addAttr(MarginTopAttr.generate(view.getPaddingTop(), base));
93+
autoLayoutInfo.addAttr(MarginRightAttr.generate(view.getPaddingRight(), base));
94+
autoLayoutInfo.addAttr(MarginBottomAttr.generate(view.getPaddingBottom(), base));
95+
}
96+
if ((attrs & Attrs.PADDING_LEFT) != 0)
97+
{
98+
autoLayoutInfo.addAttr(MarginLeftAttr.generate(view.getPaddingLeft(), base));
99+
}
100+
if ((attrs & Attrs.PADDING_TOP) != 0)
101+
{
102+
autoLayoutInfo.addAttr(MarginTopAttr.generate(view.getPaddingTop(), base));
103+
}
104+
if ((attrs & Attrs.PADDING_RIGHT) != 0)
105+
{
106+
autoLayoutInfo.addAttr(MarginRightAttr.generate(view.getPaddingRight(), base));
107+
}
108+
if ((attrs & Attrs.PADDING_BOTTOM) != 0)
109+
{
110+
autoLayoutInfo.addAttr(MarginBottomAttr.generate(view.getPaddingBottom(), base));
111+
}
112+
113+
//minWidth ,maxWidth , minHeight , maxHeight
114+
if ((attrs & Attrs.MIN_WIDTH) != 0)
115+
{
116+
autoLayoutInfo.addAttr(MinWidthAttr.generate(MinWidthAttr.getMinWidth(view), base));
117+
}
118+
if ((attrs & Attrs.MAX_WIDTH) != 0)
119+
{
120+
autoLayoutInfo.addAttr(MaxWidthAttr.generate(MaxWidthAttr.getMaxWidth(view), base));
121+
}
122+
if ((attrs & Attrs.MIN_HEIGHT) != 0)
123+
{
124+
autoLayoutInfo.addAttr(MinHeightAttr.generate(MinHeightAttr.getMinHeight(view), base));
125+
}
126+
if ((attrs & Attrs.MAX_HEIGHT) != 0)
127+
{
128+
autoLayoutInfo.addAttr(MaxHeightAttr.generate(MaxHeightAttr.getMaxHeight(view), base));
129+
}
130+
131+
//textsize
132+
133+
if (view instanceof TextView)
134+
{
135+
if ((attrs & Attrs.TEXTSIZE) != 0)
136+
{
137+
autoLayoutInfo.addAttr(TextSizeAttr.generate((int) ((TextView) view).getTextSize(), base));
138+
}
139+
}
140+
return autoLayoutInfo;
141+
}
142+
143+
27144
@Override
28145
public String toString()
29146
{

autolayout/src/main/java/com/zhy/autolayout/attr/AutoAttr.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
*/
1212
public abstract class AutoAttr
1313
{
14+
public static final int BASE_WIDTH = 1;
15+
public static final int BASE_HEIGHT = 2;
16+
public static final int BASE_DEFAULT = 3;
17+
1418
protected int pxVal;
1519
protected int baseWidth;
1620
protected int baseHeight;
@@ -109,6 +113,7 @@ protected boolean contains(int baseVal, int flag)
109113

110114
protected abstract void execute(View view, int val);
111115

116+
112117
@Override
113118
public String toString()
114119
{

autolayout/src/main/java/com/zhy/autolayout/attr/HeightAttr.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,24 @@ protected void execute(View view, int val)
3131
ViewGroup.LayoutParams lp = view.getLayoutParams();
3232
lp.height = val;
3333
}
34+
35+
public static HeightAttr generate(int val, int baseFlag)
36+
{
37+
HeightAttr heightAttr = null;
38+
switch (baseFlag)
39+
{
40+
case AutoAttr.BASE_WIDTH:
41+
heightAttr = new HeightAttr(val, Attrs.HEIGHT, 0);
42+
break;
43+
case AutoAttr.BASE_HEIGHT:
44+
heightAttr = new HeightAttr(val, 0, Attrs.HEIGHT);
45+
break;
46+
case AutoAttr.BASE_DEFAULT:
47+
heightAttr = new HeightAttr(val, 0, 0);
48+
break;
49+
}
50+
return heightAttr;
51+
}
52+
53+
3454
}

autolayout/src/main/java/com/zhy/autolayout/attr/MarginAttr.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ protected void execute(View view, int val)
4747
{
4848
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
4949
lp.leftMargin = lp.rightMargin = lp.topMargin = lp.bottomMargin = val;
50-
5150
}
51+
5252
}

autolayout/src/main/java/com/zhy/autolayout/attr/MarginBottomAttr.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,22 @@ protected void execute(View view, int val)
3535
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
3636
lp.bottomMargin = val;
3737
}
38+
39+
public static MarginBottomAttr generate(int val, int baseFlag)
40+
{
41+
MarginBottomAttr attr = null;
42+
switch (baseFlag)
43+
{
44+
case AutoAttr.BASE_WIDTH:
45+
attr = new MarginBottomAttr(val, Attrs.MARGIN_BOTTOM, 0);
46+
break;
47+
case AutoAttr.BASE_HEIGHT:
48+
attr = new MarginBottomAttr(val, 0, Attrs.MARGIN_BOTTOM);
49+
break;
50+
case AutoAttr.BASE_DEFAULT:
51+
attr = new MarginBottomAttr(val, 0, 0);
52+
break;
53+
}
54+
return attr;
55+
}
3856
}

autolayout/src/main/java/com/zhy/autolayout/attr/MarginLeftAttr.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,29 @@ protected boolean defaultBaseWidth()
2828
@Override
2929
protected void execute(View view, int val)
3030
{
31-
if(!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
31+
if (!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
3232
{
33-
return ;
33+
return;
3434
}
3535
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
3636
lp.leftMargin = val;
3737
}
38+
39+
public static MarginLeftAttr generate(int val, int baseFlag)
40+
{
41+
MarginLeftAttr attr = null;
42+
switch (baseFlag)
43+
{
44+
case AutoAttr.BASE_WIDTH:
45+
attr = new MarginLeftAttr(val, Attrs.MARGIN_LEFT, 0);
46+
break;
47+
case AutoAttr.BASE_HEIGHT:
48+
attr = new MarginLeftAttr(val, 0, Attrs.MARGIN_LEFT);
49+
break;
50+
case AutoAttr.BASE_DEFAULT:
51+
attr = new MarginLeftAttr(val, 0, 0);
52+
break;
53+
}
54+
return attr;
55+
}
3856
}

autolayout/src/main/java/com/zhy/autolayout/attr/MarginRightAttr.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,30 @@ protected boolean defaultBaseWidth()
2828
@Override
2929
protected void execute(View view, int val)
3030
{
31-
if(!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
31+
if (!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
3232
{
33-
return ;
33+
return;
3434
}
3535
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
3636
lp.rightMargin = val;
3737
}
38+
39+
40+
public static MarginRightAttr generate(int val, int baseFlag)
41+
{
42+
MarginRightAttr attr = null;
43+
switch (baseFlag)
44+
{
45+
case AutoAttr.BASE_WIDTH:
46+
attr = new MarginRightAttr(val, Attrs.MARGIN_RIGHT, 0);
47+
break;
48+
case AutoAttr.BASE_HEIGHT:
49+
attr = new MarginRightAttr(val, 0, Attrs.MARGIN_RIGHT);
50+
break;
51+
case AutoAttr.BASE_DEFAULT:
52+
attr = new MarginRightAttr(val, 0, 0);
53+
break;
54+
}
55+
return attr;
56+
}
3857
}

autolayout/src/main/java/com/zhy/autolayout/attr/MarginTopAttr.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,30 @@ protected boolean defaultBaseWidth()
2828
@Override
2929
protected void execute(View view, int val)
3030
{
31-
if(!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
31+
if (!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams))
3232
{
33-
return ;
33+
return;
3434
}
3535
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
3636
lp.topMargin = val;
3737
}
38+
39+
40+
public static MarginTopAttr generate(int val, int baseFlag)
41+
{
42+
MarginTopAttr attr = null;
43+
switch (baseFlag)
44+
{
45+
case AutoAttr.BASE_WIDTH:
46+
attr = new MarginTopAttr(val, Attrs.MARGIN_TOP, 0);
47+
break;
48+
case AutoAttr.BASE_HEIGHT:
49+
attr = new MarginTopAttr(val, 0, Attrs.MARGIN_TOP);
50+
break;
51+
case AutoAttr.BASE_DEFAULT:
52+
attr = new MarginTopAttr(val, 0, 0);
53+
break;
54+
}
55+
return attr;
56+
}
3857
}

autolayout/src/main/java/com/zhy/autolayout/attr/MaxHeightAttr.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,34 @@ protected void execute(View view, int val)
3737
{
3838
}
3939
}
40+
41+
public static MaxHeightAttr generate(int val, int baseFlag)
42+
{
43+
MaxHeightAttr attr = null;
44+
switch (baseFlag)
45+
{
46+
case AutoAttr.BASE_WIDTH:
47+
attr = new MaxHeightAttr(val, Attrs.MAX_HEIGHT, 0);
48+
break;
49+
case AutoAttr.BASE_HEIGHT:
50+
attr = new MaxHeightAttr(val, 0, Attrs.MAX_HEIGHT);
51+
break;
52+
case AutoAttr.BASE_DEFAULT:
53+
attr = new MaxHeightAttr(val, 0, 0);
54+
break;
55+
}
56+
return attr;
57+
}
58+
59+
public static int getMaxHeight(View view)
60+
{
61+
try
62+
{
63+
Method setMaxWidthMethod = view.getClass().getMethod("getMaxHeight");
64+
return (int) setMaxWidthMethod.invoke(view);
65+
} catch (Exception ignore)
66+
{
67+
}
68+
return 0;
69+
}
4070
}

0 commit comments

Comments
 (0)