refactor code
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2826a474 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2826a474 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2826a474 Branch: refs/heads/0.16-dev Commit: 2826a47496e78cf7c8d3419612b32af2a9d45117 Parents: 3dc6ac7 Author: jianbai.gbj <jianbai....@alibaba-inc.com> Authored: Thu Sep 14 12:03:54 2017 +0800 Committer: jianbai.gbj <jianbai....@alibaba-inc.com> Committed: Thu Sep 14 12:03:54 2017 +0800 ---------------------------------------------------------------------- .../ui/component/list/RecyclerTransform.java | 71 ++++++++++++++++++++ .../list/template/WXRecyclerTemplateList.java | 59 +--------------- 2 files changed, 74 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2826a474/android/sdk/src/main/java/com/taobao/weex/ui/component/list/RecyclerTransform.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/RecyclerTransform.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/RecyclerTransform.java new file mode 100644 index 0000000..166cffe --- /dev/null +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/RecyclerTransform.java @@ -0,0 +1,71 @@ +package com.taobao.weex.ui.component.list; + +import android.support.v7.widget.RecyclerView; + +import com.taobao.weex.common.Constants; +import com.taobao.weex.ui.view.listview.adapter.TransformItemDecoration; +import com.taobao.weex.utils.WXLogUtils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by jianbai.gbj on 2017/9/14. + */ +public class RecyclerTransform { + + public static final String TRANSFORM = "transform"; + private static final Pattern transformPattern = Pattern.compile("([a-z]+)\\(([0-9\\.]+),?([0-9\\.]+)?\\)"); + private static final String TAG = "RecyclerTransform"; + + /** + * These transform functions are supported: + * - `scale(x,y)`: scale item, x and y should be a positive float number. + * - `translate(x,y)`: translate item, `x` and `y` shoule be integer numbers. + * - `opacity(n)`: change the transparency of item, `n` must in `[0,1.0]`. + * - `rotate(n)`: rotate item, n is integer number. + * + * @param raw + * @return + */ + public static RecyclerView.ItemDecoration parseTransforms(int orientation, String raw) { + if (raw == null) { + return null; + } + float scaleX = 0f, scaleY = 0f; + int translateX = 0, translateY = 0; + float opacity = 0f; + int rotate = 0; + //public TransformItemDecoration(boolean isVertical,float alpha,int translateX,int translateY,int rotation,float scale) + Matcher matcher = transformPattern.matcher(raw); + while (matcher.find()) { + String match = matcher.group(); + String name = matcher.group(1); + try { + switch (name) { + case "scale": + scaleX = Float.parseFloat(matcher.group(2)); + scaleY = Float.parseFloat(matcher.group(3)); + break; + case "translate": + translateX = Integer.parseInt(matcher.group(2)); + translateY = Integer.parseInt(matcher.group(3)); + break; + case "opacity": + opacity = Float.parseFloat(matcher.group(2)); + break; + case "rotate": + rotate = Integer.parseInt(matcher.group(2)); + break; + default: + WXLogUtils.e(TAG, "Invaild transform expression:" + match); + break; + } + } catch (NumberFormatException e) { + WXLogUtils.e("", e); + WXLogUtils.e(TAG, "Invaild transform expression:" + match); + } + } + return new TransformItemDecoration(orientation == Constants.Orientation.VERTICAL, opacity, translateX, translateY, rotate, scaleX, scaleY); + } +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2826a474/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java index 826b080..a36b912 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java @@ -65,6 +65,7 @@ import com.taobao.weex.ui.component.WXRefresh; import com.taobao.weex.ui.component.WXVContainer; import com.taobao.weex.ui.component.binding.Layouts; import com.taobao.weex.ui.component.binding.Statements; +import com.taobao.weex.ui.component.list.RecyclerTransform; import com.taobao.weex.ui.component.list.WXCell; import com.taobao.weex.ui.view.listview.ExtendedLinearLayoutManager; import com.taobao.weex.ui.view.listview.WXRecyclerView; @@ -94,11 +95,8 @@ import java.util.regex.Pattern; @Component(lazyload = false) public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> implements IRecyclerAdapterListener<TemplateViewHolder>, IOnLoadMoreListener, Scrollable { - public static final String TRANSFORM = "transform"; - private static final Pattern transformPattern = Pattern.compile("([a-z]+)\\(([0-9\\.]+),?([0-9\\.]+)?\\)"); public static final String LOADMOREOFFSET = "loadmoreoffset"; private static final String TAG = "WXRecyclerTemplateList"; - private WXRecyclerDomObject mDomObject; protected int mLayoutType = WXRecyclerView.TYPE_LINEAR_LAYOUT; protected int mColumnCount = 1; @@ -178,9 +176,9 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp @Override protected BounceRecyclerView initComponentHostView(@NonNull Context context) { final BounceRecyclerView bounceRecyclerView = new BounceRecyclerView(context,mLayoutType,mColumnCount,mColumnGap, getOrientation()); - String transforms = (String) getDomObject().getAttrs().get(TRANSFORM); + String transforms = (String) getDomObject().getAttrs().get(RecyclerTransform.TRANSFORM); if (transforms != null) { - bounceRecyclerView.getInnerView().addItemDecoration(parseTransforms(transforms)); + bounceRecyclerView.getInnerView().addItemDecoration(RecyclerTransform.parseTransforms(getOrientation(), transforms)); } mItemAnimator = bounceRecyclerView.getInnerView().getItemAnimator(); RecyclerViewBaseAdapter recyclerViewBaseAdapter = new RecyclerViewBaseAdapter<>(this); @@ -304,57 +302,6 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp } - /** - * These transform functions are supported: - * - `scale(x,y)`: scale item, x and y should be a positive float number. - * - `translate(x,y)`: translate item, `x` and `y` shoule be integer numbers. - * - `opacity(n)`: change the transparency of item, `n` must in `[0,1.0]`. - * - `rotate(n)`: rotate item, n is integer number. - * - * @param raw - * @return - */ - private RecyclerView.ItemDecoration parseTransforms(String raw) { - if (raw == null) { - return null; - } - float scaleX = 0f, scaleY = 0f; - int translateX = 0, translateY = 0; - float opacity = 0f; - int rotate = 0; - //public TransformItemDecoration(boolean isVertical,float alpha,int translateX,int translateY,int rotation,float scale) - Matcher matcher = transformPattern.matcher(raw); - while (matcher.find()) { - String match = matcher.group(); - String name = matcher.group(1); - try { - switch (name) { - case "scale": - scaleX = Float.parseFloat(matcher.group(2)); - scaleY = Float.parseFloat(matcher.group(3)); - break; - case "translate": - translateX = Integer.parseInt(matcher.group(2)); - translateY = Integer.parseInt(matcher.group(3)); - break; - case "opacity": - opacity = Float.parseFloat(matcher.group(2)); - break; - case "rotate": - rotate = Integer.parseInt(matcher.group(2)); - break; - default: - WXLogUtils.e(TAG, "Invaild transform expression:" + match); - break; - } - } catch (NumberFormatException e) { - WXLogUtils.e("", e); - WXLogUtils.e(TAG, "Invaild transform expression:" + match); - } - } - return new TransformItemDecoration(getOrientation() == Constants.Orientation.VERTICAL, opacity, translateX, translateY, rotate, scaleX, scaleY); - } - @Override public void bindStickStyle(WXComponent component) { WXComponent template = findParentType(component, WXCell.class);