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);
}
}
}
}
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();
}
}
}
}
}
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);
}
}
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;
}
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;
}
Aggregations