Search in sources :

Example 1 with OnWXScrollListener

use of com.taobao.weex.common.OnWXScrollListener in project weex-example by KalicyZhou.

the class BasicListComponent method initComponentHostView.

@Override
protected T initComponentHostView(@NonNull Context context) {
    T bounceRecyclerView = generateListView(context, getOrientation());
    String transforms = (String) getDomObject().getAttrs().get(TRANSFORM);
    if (transforms != null) {
        bounceRecyclerView.getInnerView().addItemDecoration(parseTransforms(transforms));
    }
    RecyclerViewBaseAdapter recyclerViewBaseAdapter = new RecyclerViewBaseAdapter<>(this);
    recyclerViewBaseAdapter.setHasStableIds(true);
    bounceRecyclerView.setRecyclerViewBaseAdapter(recyclerViewBaseAdapter);
    bounceRecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
    bounceRecyclerView.getInnerView().clearOnScrollListeners();
    bounceRecyclerView.getInnerView().addOnScrollListener(mViewOnScrollListener);
    bounceRecyclerView.getInnerView().addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                for (ListBaseViewHolder holder : recycleViewList) {
                    if (holder != null && holder.getComponent() != null && !holder.getComponent().isUsing()) {
                        recycleImage(holder.getView());
                    }
                }
                recycleViewList.clear();
            }
            List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
            if (listeners != null && listeners.size() > 0) {
                for (OnWXScrollListener listener : listeners) {
                    if (listener != null) {
                        View topView = recyclerView.getChildAt(0);
                        if (topView != null) {
                            int y = topView.getTop();
                            listener.onScrollStateChanged(recyclerView, 0, y, newState);
                        }
                    }
                }
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
            if (listeners != null && listeners.size() > 0) {
                for (OnWXScrollListener listener : listeners) {
                    if (listener != null) {
                        listener.onScrolled(recyclerView, dx, dy);
                    }
                }
            }
        }
    });
    bounceRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onGlobalLayout() {
            T view;
            if ((view = getHostView()) == null)
                return;
            mViewOnScrollListener.onScrolled(view.getInnerView(), 0, 0);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            } else {
                view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
        }
    });
    return bounceRecyclerView;
}
Also used : OnWXScrollListener(com.taobao.weex.common.OnWXScrollListener) ImageView(android.widget.ImageView) WXRecyclerView(com.taobao.weex.ui.view.listview.WXRecyclerView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) Point(android.graphics.Point) ListBaseViewHolder(com.taobao.weex.ui.view.listview.adapter.ListBaseViewHolder) RecyclerViewBaseAdapter(com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter) WXRecyclerView(com.taobao.weex.ui.view.listview.WXRecyclerView) RecyclerView(android.support.v7.widget.RecyclerView) List(java.util.List) ArrayList(java.util.ArrayList) ViewTreeObserver(android.view.ViewTreeObserver) TargetApi(android.annotation.TargetApi)

Example 2 with OnWXScrollListener

use of com.taobao.weex.common.OnWXScrollListener in project weex-example by KalicyZhou.

the class WXScroller method initComponentHostView.

@Override
protected ViewGroup initComponentHostView(@NonNull Context context) {
    String scroll;
    if (getDomObject() == null || getDomObject().getAttrs().isEmpty()) {
        scroll = "vertical";
    } else {
        scroll = getDomObject().getAttrs().getScrollDirection();
    }
    ViewGroup host;
    if (("horizontal").equals(scroll)) {
        mOrientation = Constants.Orientation.HORIZONTAL;
        WXHorizontalScrollView scrollView = new WXHorizontalScrollView(context);
        mRealView = new FrameLayout(context);
        scrollView.setScrollViewListener(new WXHorizontalScrollView.ScrollViewListener() {

            @Override
            public void onScrollChanged(WXHorizontalScrollView scrollView, int x, int y, int oldx, int oldy) {
                procAppear(x, y, oldx, oldy);
            }
        });
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        scrollView.addView(mRealView, layoutParams);
        scrollView.setHorizontalScrollBarEnabled(false);
        host = scrollView;
    } else {
        mOrientation = Constants.Orientation.VERTICAL;
        BounceScrollerView scrollerView = new BounceScrollerView(context, mOrientation, this);
        mRealView = new FrameLayout(context);
        WXScrollView innerView = scrollerView.getInnerView();
        innerView.addScrollViewListener(this);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        innerView.addView(mRealView, layoutParams);
        innerView.setVerticalScrollBarEnabled(true);
        innerView.addScrollViewListener(new WXScrollViewListener() {

            @Override
            public void onScrollChanged(WXScrollView scrollView, int x, int y, int oldx, int oldy) {
            }

            @Override
            public void onScrollToBottom(WXScrollView scrollView, int x, int y) {
            }

            @Override
            public void onScrollStopped(WXScrollView scrollView, int x, int y) {
                List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
                if (listeners != null && listeners.size() > 0) {
                    for (OnWXScrollListener listener : listeners) {
                        if (listener != null) {
                            listener.onScrollStateChanged(scrollView, x, y, OnWXScrollListener.IDLE);
                        }
                    }
                }
            }

            @Override
            public void onScroll(WXScrollView scrollView, int x, int y) {
                List<OnWXScrollListener> listeners = getInstance().getWXScrollListeners();
                if (listeners != null && listeners.size() > 0) {
                    for (OnWXScrollListener listener : listeners) {
                        if (listener != null) {
                            listener.onScrolled(scrollView, x, y);
                        }
                    }
                }
            }
        });
        host = scrollerView;
    }
    host.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onGlobalLayout() {
            procAppear(0, 0, 0, 0);
            View view;
            if ((view = getHostView()) == null) {
                return;
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            } else {
                view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
        }
    });
    return host;
}
Also used : LayoutParams(android.widget.FrameLayout.LayoutParams) ViewGroup(android.view.ViewGroup) WXHorizontalScrollView(com.taobao.weex.ui.view.WXHorizontalScrollView) OnWXScrollListener(com.taobao.weex.common.OnWXScrollListener) BounceScrollerView(com.taobao.weex.ui.view.refresh.wrapper.BounceScrollerView) View(android.view.View) WXScrollView(com.taobao.weex.ui.view.WXScrollView) WXHorizontalScrollView(com.taobao.weex.ui.view.WXHorizontalScrollView) BaseBounceView(com.taobao.weex.ui.view.refresh.wrapper.BaseBounceView) Point(android.graphics.Point) WXScrollView(com.taobao.weex.ui.view.WXScrollView) LayoutParams(android.widget.FrameLayout.LayoutParams) FrameLayout(android.widget.FrameLayout) BounceScrollerView(com.taobao.weex.ui.view.refresh.wrapper.BounceScrollerView) ArrayList(java.util.ArrayList) List(java.util.List) ViewTreeObserver(android.view.ViewTreeObserver) TargetApi(android.annotation.TargetApi) WXScrollViewListener(com.taobao.weex.ui.view.WXScrollView.WXScrollViewListener)

Aggregations

TargetApi (android.annotation.TargetApi)2 Point (android.graphics.Point)2 View (android.view.View)2 ViewTreeObserver (android.view.ViewTreeObserver)2 OnWXScrollListener (com.taobao.weex.common.OnWXScrollListener)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 RecyclerView (android.support.v7.widget.RecyclerView)1 ViewGroup (android.view.ViewGroup)1 FrameLayout (android.widget.FrameLayout)1 LayoutParams (android.widget.FrameLayout.LayoutParams)1 ImageView (android.widget.ImageView)1 WXHorizontalScrollView (com.taobao.weex.ui.view.WXHorizontalScrollView)1 WXScrollView (com.taobao.weex.ui.view.WXScrollView)1 WXScrollViewListener (com.taobao.weex.ui.view.WXScrollView.WXScrollViewListener)1 WXRecyclerView (com.taobao.weex.ui.view.listview.WXRecyclerView)1 ListBaseViewHolder (com.taobao.weex.ui.view.listview.adapter.ListBaseViewHolder)1 RecyclerViewBaseAdapter (com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter)1 BaseBounceView (com.taobao.weex.ui.view.refresh.wrapper.BaseBounceView)1 BounceScrollerView (com.taobao.weex.ui.view.refresh.wrapper.BounceScrollerView)1