From 645880230e5a5a460ea027f6aac109d64b7f7572 Mon Sep 17 00:00:00 2001 From: dave wu Date: Wed, 5 Jul 2017 09:22:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0android=5FhorizontalSpaci?= =?UTF-8?q?ng=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autolayout-widget/build.gradle | 4 +- autolayout/build.gradle | 2 +- .../com/zhy/autolayout/AutoLayoutInfo.java | 21 +++++++ .../java/com/zhy/autolayout/attr/Attrs.java | 1 + .../attr/GridHorizontalSpacingAttr.java | 57 +++++++++++++++++++ .../autolayout/utils/AutoLayoutHelper.java | 7 ++- sample/build.gradle | 4 +- sample/src/main/res/layout/activity_test.xml | 6 ++ widgetsample/build.gradle | 4 +- 9 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 autolayout/src/main/java/com/zhy/autolayout/attr/GridHorizontalSpacingAttr.java diff --git a/autolayout-widget/build.gradle b/autolayout-widget/build.gradle index 12479e2..f402200 100644 --- a/autolayout-widget/build.gradle +++ b/autolayout-widget/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 25 + buildToolsVersion "25.0.1" defaultConfig { minSdkVersion 10 diff --git a/autolayout/build.gradle b/autolayout/build.gradle index d02e622..88e380c 100644 --- a/autolayout/build.gradle +++ b/autolayout/build.gradle @@ -6,7 +6,7 @@ version = "1.4.5" android { compileSdkVersion 23 - buildToolsVersion "23.0.1" + buildToolsVersion '25.0.0' defaultConfig { minSdkVersion 7 diff --git a/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java b/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java index ebe2a2a..6cb0541 100644 --- a/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java +++ b/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java @@ -2,10 +2,12 @@ import android.view.View; import android.view.ViewGroup; +import android.widget.GridView; import android.widget.TextView; import com.zhy.autolayout.attr.Attrs; import com.zhy.autolayout.attr.AutoAttr; +import com.zhy.autolayout.attr.GridHorizontalSpacingAttr; import com.zhy.autolayout.attr.HeightAttr; import com.zhy.autolayout.attr.MarginBottomAttr; import com.zhy.autolayout.attr.MarginLeftAttr; @@ -22,6 +24,7 @@ import com.zhy.autolayout.attr.TextSizeAttr; import com.zhy.autolayout.attr.WidthAttr; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @@ -141,9 +144,27 @@ public static AutoLayoutInfo getAttrFromView(View view, int attrs, int base) autoLayoutInfo.addAttr(TextSizeAttr.generate((int) ((TextView) view).getTextSize(), base)); } } + + if(view instanceof GridView) + { + autoLayoutInfo.addAttr(GridHorizontalSpacingAttr.generate( + getHorizontalSpacing((GridView) view), base + ); + } return autoLayoutInfo; } + private static int getHorizontalSpacing(GridView gridView){ + try { + Field field = gridView.getClass().getDeclaredField("mHorizontalSpacing"); + field.setAccessible(true); + return field.getInt(gridView); + } catch (IllegalAccessException e) { + return gridView.getHorizontalSpacing(); + } catch (NoSuchFieldException e) { + return gridView.getHorizontalSpacing(); + } + } @Override public String toString() diff --git a/autolayout/src/main/java/com/zhy/autolayout/attr/Attrs.java b/autolayout/src/main/java/com/zhy/autolayout/attr/Attrs.java index 774d803..b90ddd0 100644 --- a/autolayout/src/main/java/com/zhy/autolayout/attr/Attrs.java +++ b/autolayout/src/main/java/com/zhy/autolayout/attr/Attrs.java @@ -24,5 +24,6 @@ public interface Attrs public static final int MAX_WIDTH = MIN_WIDTH << 1; public static final int MIN_HEIGHT = MAX_WIDTH << 1; public static final int MAX_HEIGHT = MIN_HEIGHT << 1; + public static final int GRID_HORIZONTAL_SPACING = MAX_HEIGHT << 1; } diff --git a/autolayout/src/main/java/com/zhy/autolayout/attr/GridHorizontalSpacingAttr.java b/autolayout/src/main/java/com/zhy/autolayout/attr/GridHorizontalSpacingAttr.java new file mode 100644 index 0000000..ec11538 --- /dev/null +++ b/autolayout/src/main/java/com/zhy/autolayout/attr/GridHorizontalSpacingAttr.java @@ -0,0 +1,57 @@ +package com.zhy.autolayout.attr; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; + +/** + * Created by zhy on 15/12/5. + */ +public class GridHorizontalSpacingAttr extends AutoAttr +{ + public GridHorizontalSpacingAttr(int pxVal, int baseWidth, int baseHeight) + { + super(pxVal, baseWidth, baseHeight); + } + + @Override + protected int attrVal() + { + return Attrs.GRID_HORIZONTAL_SPACING; + } + + @Override + protected boolean defaultBaseWidth() + { + return true; + } + + @Override + protected void execute(View view, int val) + { + if(!(view instanceof GridView)) + { + return ; + } + GridView gridView = (GridView) view; + gridView.setHorizontalSpacing(val); + } + + public static GridHorizontalSpacingAttr generate(int val, int baseFlag) + { + GridHorizontalSpacingAttr attr = null; + switch (baseFlag) + { + case AutoAttr.BASE_WIDTH: + attr = new GridHorizontalSpacingAttr(val, Attrs.GRID_HORIZONTAL_SPACING, 0); + break; + case AutoAttr.BASE_HEIGHT: + attr = new GridHorizontalSpacingAttr(val, 0, Attrs.GRID_HORIZONTAL_SPACING); + break; + case AutoAttr.BASE_DEFAULT: + attr = new GridHorizontalSpacingAttr(val, 0, 0); + break; + } + return attr; + } +} diff --git a/autolayout/src/main/java/com/zhy/autolayout/utils/AutoLayoutHelper.java b/autolayout/src/main/java/com/zhy/autolayout/utils/AutoLayoutHelper.java index 9ac666e..e55250d 100644 --- a/autolayout/src/main/java/com/zhy/autolayout/utils/AutoLayoutHelper.java +++ b/autolayout/src/main/java/com/zhy/autolayout/utils/AutoLayoutHelper.java @@ -24,6 +24,7 @@ import com.zhy.autolayout.AutoLayoutInfo; import com.zhy.autolayout.R; +import com.zhy.autolayout.attr.GridHorizontalSpacingAttr; import com.zhy.autolayout.attr.HeightAttr; import com.zhy.autolayout.attr.MarginAttr; import com.zhy.autolayout.attr.MarginBottomAttr; @@ -66,7 +67,7 @@ public class AutoLayoutHelper android.R.attr.maxHeight,// android.R.attr.minWidth,// android.R.attr.minHeight,//16843072 - + android.R.attr.horizontalSpacing }; @@ -87,6 +88,7 @@ public class AutoLayoutHelper private static final int INDEX_MAX_HEIGHT = 14; private static final int INDEX_MIN_WIDTH = 15; private static final int INDEX_MIN_HEIGHT = 16; + private static final int INDEX_HORIZONTAL_SPACING = 17; /** @@ -219,6 +221,9 @@ public static AutoLayoutInfo getAutoLayoutInfo(Context context, case INDEX_MIN_HEIGHT: info.addAttr(new MinHeightAttr(pxVal, baseWidth, baseHeight)); break; + case INDEX_HORIZONTAL_SPACING: + info.addAttr(new GridHorizontalSpacingAttr(pxVal, baseWidth, baseHeight)); + break; } } array.recycle(); diff --git a/sample/build.gradle b/sample/build.gradle index 6fc8339..4a608a0 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 25 + buildToolsVersion "25.0.1" defaultConfig { applicationId "com.zhy.sample" diff --git a/sample/src/main/res/layout/activity_test.xml b/sample/src/main/res/layout/activity_test.xml index 41bc266..32cfe16 100644 --- a/sample/src/main/res/layout/activity_test.xml +++ b/sample/src/main/res/layout/activity_test.xml @@ -27,4 +27,10 @@ android:text="完成注册" android:textColor="@android:color/white" android:textSize="49px"/> + + \ No newline at end of file diff --git a/widgetsample/build.gradle b/widgetsample/build.gradle index 513b9f8..026a199 100644 --- a/widgetsample/build.gradle +++ b/widgetsample/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + compileSdkVersion 25 + buildToolsVersion "25.0.1" defaultConfig { applicationId "com.zhy.autolayout.test.widgets" From d59bd48a8a0b8889496564520dc7d3181ba7e24f Mon Sep 17 00:00:00 2001 From: dave wu Date: Fri, 7 Jul 2017 19:42:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zhy/autolayout/AutoLayoutInfo.java | 2 +- sample/src/main/res/layout/activity_test.xml | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java b/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java index 6cb0541..673cac0 100644 --- a/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java +++ b/autolayout/src/main/java/com/zhy/autolayout/AutoLayoutInfo.java @@ -149,7 +149,7 @@ public static AutoLayoutInfo getAttrFromView(View view, int attrs, int base) { autoLayoutInfo.addAttr(GridHorizontalSpacingAttr.generate( getHorizontalSpacing((GridView) view), base - ); + )); } return autoLayoutInfo; } diff --git a/sample/src/main/res/layout/activity_test.xml b/sample/src/main/res/layout/activity_test.xml index 32cfe16..89bb9a2 100644 --- a/sample/src/main/res/layout/activity_test.xml +++ b/sample/src/main/res/layout/activity_test.xml @@ -28,9 +28,4 @@ android:textColor="@android:color/white" android:textSize="49px"/> - \ No newline at end of file