Search in sources :

Example 6 with UDView

use of com.taobao.luaview.userdata.ui.UDView in project LuaViewSDK by alibaba.

the class LVViewGroup method measureChildNode.

private void measureChildNode(int widthMeasureSpec, int heightMeasureSpec) {
    int childNodeViewsCount = mChildNodeViews.size();
    for (int i = 0; i < childNodeViewsCount; i++) {
        UDView nodeView = mChildNodeViews.get(i);
        View view = nodeView.getView();
        CSSNode node = nodeView.getCssNode();
        if (node.getSizeToFit()) {
            int margins = (int) (node.getMargin().get(Spacing.LEFT) + node.getMargin().get(Spacing.RIGHT));
            measureChild(view, widthMeasureSpec - margins, heightMeasureSpec);
            node.setNoDirtyStyleWidth(view.getMeasuredWidth());
            node.setNoDirtyStyleHeight(view.getMeasuredHeight());
        }
        if (view instanceof LVViewGroup) {
            LVViewGroup viewGroup = (LVViewGroup) view;
            if (viewGroup.getCssNode().getChildCount() > 0) {
                viewGroup.measureChildNode(widthMeasureSpec, heightMeasureSpec);
            }
        }
    }
}
Also used : UDView(com.taobao.luaview.userdata.ui.UDView) UDView(com.taobao.luaview.userdata.ui.UDView) View(android.view.View) ILVViewGroup(com.taobao.luaview.view.interfaces.ILVViewGroup) CSSNode(com.facebook.csslayout.CSSNode)

Example 7 with UDView

use of com.taobao.luaview.userdata.ui.UDView in project LuaViewSDK by alibaba.

the class LVViewGroup method assignNodeLayoutParams.

private void assignNodeLayoutParams() {
    int childNodeViewsCount = mChildNodeViews.size();
    for (int i = 0; i < childNodeViewsCount; i++) {
        UDView nodeView = mChildNodeViews.get(i);
        View view = nodeView.getView();
        CSSNode node = nodeView.getCssNode();
        if (view != null && node != null) {
            int x = (int) node.getLayoutX();
            int y = (int) node.getLayoutY();
            int width = (int) node.getLayoutWidth();
            int height = (int) node.getLayoutHeight();
            RelativeLayout.LayoutParams lParams = (LayoutParams) view.getLayoutParams();
            if (lParams == null) {
                lParams = new RelativeLayout.LayoutParams(width, height);
            } else {
                lParams.width = width;
                lParams.height = height;
            }
            lParams.setMargins(x, y, 0, 0);
            view.setLayoutParams(lParams);
            if (view instanceof LVViewGroup) {
                LVViewGroup viewGroup = (LVViewGroup) view;
                if (viewGroup.getCssNode().getChildCount() > 0) {
                    viewGroup.assignNodeLayoutParams();
                }
            }
        }
    }
}
Also used : UDView(com.taobao.luaview.userdata.ui.UDView) RelativeLayout(android.widget.RelativeLayout) ForegroundRelativeLayout(com.taobao.luaview.view.foreground.ForegroundRelativeLayout) UDView(com.taobao.luaview.userdata.ui.UDView) View(android.view.View) ILVViewGroup(com.taobao.luaview.view.interfaces.ILVViewGroup) CSSNode(com.facebook.csslayout.CSSNode)

Example 8 with UDView

use of com.taobao.luaview.userdata.ui.UDView in project LuaViewSDK by alibaba.

the class LVViewPager method setViewPagerIndicator.

public void setViewPagerIndicator(LuaValue indicator) {
    if (indicator instanceof UDView && ((UDView) indicator).getView() instanceof PageIndicator) {
        final PageIndicator pageIndicator = (PageIndicator) ((UDView) indicator).getView();
        pageIndicator.setViewPager(this);
        pageIndicator.setOnPageChangeListener(mOnPageChangeListener);
    }
}
Also used : PageIndicator(com.taobao.luaview.view.indicator.circle.PageIndicator) UDView(com.taobao.luaview.userdata.ui.UDView)

Example 9 with UDView

use of com.taobao.luaview.userdata.ui.UDView in project LuaViewSDK by alibaba.

the class LVListViewAdapter method getView.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //        LogUtil.d("yesong", position, convertView, getItemViewType(position), getViewTypeCount());
    //数据封装
    UDLuaTable cellData = null;
    final int viewType = getItemViewType(position);
    final boolean hasCellSize = this.mLuaUserData.hasCellSize(position);
    if (convertView == null || ((UDLuaTable) convertView.getTag()).get(KEY_VIEW_TYPE) != LuaValue.valueOf(viewType)) {
        //在内部创建好Cell
        //TODO 为什么用mLuaUserData.getmetatable()不行
        UDView layout = new UDViewGroup(createLayout(), mGlobals, null);
        //对外数据封装,必须使用LuaTable
        cellData = new UDLuaTable(layout);
        //View封装
        if (hasCellSize) {
            //有Size的定义
            final LVViewGroup cellView = createLayout();
            View tmp = layout.getView();
            if (tmp != null) {
                cellView.addView(tmp);
            }
            convertView = cellView;
        } else {
            convertView = layout.getView();
        }
        initView(cellData, position);
        convertView.setTag(cellData);
    } else {
        cellData = (UDLuaTable) convertView.getTag();
    }
    //更新position
    cellData.set(KEY_VIEW_TYPE, viewType);
    if (hasCellSize) {
        //有Size的定义,每次更新size
        //TODO 需要动态更新View的Size,需要在这里调用,否则移动到初始化的时候。这个暂时先去掉,会有问题,复用有问题
        initCellSize(cellData, position);
    }
    //绘制数据
    renderView(cellData, position);
    return convertView;
}
Also used : UDLuaTable(com.taobao.luaview.userdata.base.UDLuaTable) UDViewGroup(com.taobao.luaview.userdata.ui.UDViewGroup) UDView(com.taobao.luaview.userdata.ui.UDView) LVViewGroup(com.taobao.luaview.view.LVViewGroup) AbsListView(android.widget.AbsListView) UDBaseListView(com.taobao.luaview.userdata.list.UDBaseListView) UDView(com.taobao.luaview.userdata.ui.UDView) View(android.view.View)

Example 10 with UDView

use of com.taobao.luaview.userdata.ui.UDView in project LuaViewSDK by alibaba.

the class LVPagerAdapter method newItem.

public Object newItem(ViewGroup container, int position) {
    //View封装
    //TODO 为什么用mLuaUserData.getmetatable()不行
    final UDView page = new UDViewGroup(createPageLayout(), mGlobals, null);
    //对外数据封装,必须使用LuaTable
    final UDLuaTable pageData = new UDLuaTable(page);
    final View pageView = pageData.getView();
    //添加view
    if (container != null && pageView != null) {
        container.addView(pageView);
    }
    //初始化View
    initView(pageData, position);
    //绘制数据
    renderView(pageData, position);
    //add to list
    mViews.put(position, new WeakReference<View>(pageView));
    return pageView;
}
Also used : UDLuaTable(com.taobao.luaview.userdata.base.UDLuaTable) UDViewGroup(com.taobao.luaview.userdata.ui.UDViewGroup) UDView(com.taobao.luaview.userdata.ui.UDView) UDView(com.taobao.luaview.userdata.ui.UDView) View(android.view.View)

Aggregations

UDView (com.taobao.luaview.userdata.ui.UDView)12 View (android.view.View)9 UDLuaTable (com.taobao.luaview.userdata.base.UDLuaTable)3 UDViewGroup (com.taobao.luaview.userdata.ui.UDViewGroup)3 LuaValue (org.luaj.vm2.LuaValue)3 ViewGroup (android.view.ViewGroup)2 CSSNode (com.facebook.csslayout.CSSNode)2 ILVView (com.taobao.luaview.view.interfaces.ILVView)2 ILVViewGroup (com.taobao.luaview.view.interfaces.ILVViewGroup)2 AbsListView (android.widget.AbsListView)1 RelativeLayout (android.widget.RelativeLayout)1 BaseUserdata (com.taobao.luaview.userdata.base.BaseUserdata)1 UDBaseListView (com.taobao.luaview.userdata.list.UDBaseListView)1 LVViewGroup (com.taobao.luaview.view.LVViewGroup)1 ForegroundRelativeLayout (com.taobao.luaview.view.foreground.ForegroundRelativeLayout)1 PageIndicator (com.taobao.luaview.view.indicator.circle.PageIndicator)1 ArrayList (java.util.ArrayList)1 LuaTable (org.luaj.vm2.LuaTable)1