精华内容
下载资源
问答
  • Tangram

    2010-12-23 11:38:00
    Tangram是一套简单可依赖的Javascript库,它的特点: 体积小巧,性能优良,使用简单。 模块化架构,方便定制与扩展。 适合团队开发,丰富的中文文档和本地技术优化,适合中国用户。 多浏览器支持: ...

    Tangram是一套简单可依赖的Javascript库,它的特点:

    • 体积小巧,性能优良,使用简单。
    • 模块化架构,方便定制与扩展。
    • 适合团队开发,丰富的中文文档和本地技术优化,适合中国用户。
    • 多浏览器支持:
      •  
        IE6、7、8+
      •  
        firfox3.x+
      •  
        遨游2.x+
      •  
        opera 10.x
      •  
        chrome 4.x+
      •  
        safari 4.x+
    • 经过专业QA团队的测试以及百度各大产品线的应用,质量有保障。

    转载于:https://www.cnblogs.com/freedom831215/archive/2010/12/23/1914623.html

    展开全文
  • tangram

    2007-11-29 09:05:33
    是COM技术内幕第13章的例子, 是一个七巧板的源码.
  • Tangram入门

    2019-12-05 16:08:49
    Tangram2.0库 Android Tangram-Android Virtualview-Android iOS Tangram-iOS Virtualview-iOS tangram 使用的工具类 virtualview_tools Tangram ios的Tagram总体由四部分构成:Core,Layout,EventBus,Helper 1、...

    iOS入门

    timg.jpeg

    Tangram2.0库

    Android

    Tangram-Android
    Virtualview-Android

    iOS

    Tangram-iOS
    Virtualview-iOS

    tangram 使用的工具类
    virtualview_tools

    Tangram

    ios的Tagram总体由四部分构成:Core,Layout,EventBus,Helper
    13399000.jpg

    1、Core

    Tangram的复用和回收机制是由core负责的。主要的原理就是使用了LazyScroll(底层是UIScrollView),就是先把LazyScroll里面所有需要回收复用的视图的绝对坐标先整理出来,然后在LazyScroll滚动的时候,查找哪些视图需要回收,哪些视图需要复用。core主要是TangramView。

    TangramView的核心方法:
    15752663230718.jpg

    2、LayOut

    LayOut主要负责处理内部组件摆放的位置。布局需要实现TangramLayoutProtocol。它的核心方法是calculateLayout,这里面需要安排内部ViewModel的位置,决定后面要生成的视图要如何摆放。
    Tangram有丰富的内置布局可供选择,比如 流式布局、一拖N的、浮标、固定、吸顶、吸底、轮播、线性滚动、瀑布流等布局,当然布局也可以自行拓展。因为有些布方式比较特殊,TangramView会对它们有特殊的处理逻辑。

    布局样式:
    15749110216877.jpg

    内置的布局类型,可以参考
    http://tangram.pingguohe.net/docs/layout-support/inner-support

    3、EventBus

    事件总线用于组件和Controller,layout、TangramView之间的通信。点击、曝光就是典型的事件总线使用场景。
    事件总线的使用方法:
    15749109334425.jpg

    4、Helper

    Helper的作用是简化代码,快速生成布局、组件。

    Helper具体是指TangramDefaultDataSourceHelper, 这个解析器具备以下功能:

    • 快速解析layout—(NSDictionary -> layout实例)
    • 快速解析Model-----(NSDictionary -> model实例)
    • 从model快速生成element----(model实例 ->组件实例)
    • 用新的model刷新即将被复用的element

    15752573326331.jpg

    TangramDefaultDataSourceHelper实际上是串联起来了三种类型的工厂类,每种各需要一个。Helper在这三个工厂提供的API基础上,再封装成更易于使用的API。这三个工厂默认的是

    • TangramDefaultLayoutFactory
    • TangramDefaultItemModelFactory
    • TangramDefaultElementFactory

    15752581576050.jpg

    VirtualView

    VirtualView简介

    VirtualView 是 Tangram 2.0 库中的一个重要组成部分。是Tangram模型在V2.0补充的UI开源库。

    VirtualView的作用
    解决Tangram V1.0中加载性能低和UI组件没有办法动态更新的问题。

    VirtualView的功能

    1. 使用Canvas绘制视图,创建虚拟化组件
    2. 通过XML快速的创建界面模版
    3. 客户端运行时动态加载XML模版,从而渲染界面

    15754410484609.jpg
    VirtualView被称为虚拟组件的原因
    1、使用canvas绘制视图
    2、不存在实际的view,依赖于宿主容器视图
    3、VirtualView不想我们平常使用的一些控件,比如Label,Button等等

    15754427907248.jpg

    VirtualView的主要流程

    提供了用 XML 去书写 UI 组件的方案,然后动态化下发编译好的二进制文件,最后再利用客户端内置的 SDK 来解析展示这些 UI 组件。

    VirtualView的主要流程:
    15752725196473.jpg
    流程:

    1. 编写业务组件模板
    2. 通过工具将模板数据编译成二进制数据。注意加载 XML 并不是直接加载原始 XML 文件,而是先通过 virtualview_tools 编译成一段二进制数据,生成后缀为 .out的文件。
    3. 下发到客户端。客户端加载二进制数据可以有两种路径:
      第一种:直接将编译结果打包到客户端里加载,
      第二种:是发布到模板管理后台cdn上,让客户端去下载,在线更新到模版数据。
    4. 加载解析二进制数据。不论是那种方式加载二进制数据,客户端的工作都需要解析二进制数据,比如校验版本号,合法性,读取头信息等等。
    5. 创建组件视图。会根据组件名称找到二进制数据,通过上面介绍过的Helper工具解析并且创建出真正的组件模型数据。
    6. 绑定业务数据。用户需要获取到业务数据绑定到组件上,组件的属性里可以写表达式来指定使用哪一个数据字段。
    7. 显示,组件结合业务数据渲染在视图上面。

    VirtualView的特点

    15754284596053.jpg

    1、渲染性能高。渲染出来的视图结构呈现扁平化。
    2、组建热更新。可以通过配套的xml模版来更新sdk;可以动态更新组件和界面。
    3、跨平台。一套xml模版,可以android、iOS俩个不同的平台使用。
    4、兼容性好。可以支持加载、渲染原生基础组件;也可以解决虚拟化view带来的原生view的能力损失的问题。
    5、使用方便。它内置了一系列基础组件可以直接被使用;也支持数据绑定的表达式。也可以在样式动态化。数据动态化的场景下能非常方便地实现业务需求。

    参考文件

    https://www.jianshu.com/p/48764ff8449f

    https://www.jianshu.com/p/cd634106f533

    http://pingguohe.net/2017/04/24/tangram-ios-structure.html

    http://tangram.pingguohe.net/docs/ios/tangram-core

    展开全文
  • Tangram是用于动态构建本机页面的模块化UI解决方案,包括Android的Tangram,iOS的Tangram甚至后端CMS。 该项目在基于和Android上提供sdk。 产品特点 警告请不要使用tangram3包下的类! 七巧板3.0正在开发中,我们...
  • Tangram2 感谢您关注并使用Tangram2.0,我们在官网地址是: 也欢迎您关注JS小组官方微博
  • 七巧板 七巧板-CLI为命令行界面。 安装 $ npm install --global tangram-cli 用法 $ tangram path/to/foo.html
  • Tangram for Android 中文文档 Projects of Tangram Android Tangram-Android Virtualview-Android vlayout UltraViewPager iOS Tangram-iOS Virtualview-iOS LazyScrollView Tangram is a modular UI ...
  • Tangram.pdf

    2019-08-28 18:01:26
    天猫伯灵在GMTC2017全球移动技术大会上做了主题为《手机天猫面向业务的界面解决方案-Tangram》的分享,就Tangram的介绍,面向业务和解决方案进行了深入的分享
  • 围观tangram js库

    2020-10-28 18:34:34
    Tangram开源将近一周,持续围观了几天。写一个简单的围观笔记吧。
  • Tangram属性

    2019-04-14 16:01:18
    Tangram属性 标题一,流式布局 依次填充,满一行换下一行。 type属性: container-oneColumn 单列(一排一) container-twoColumn 双列 container-threeColumn 三列 container-fourColumn 四列 container-fiveColumn ...

    Tangram属性

    Card属性:

    	public static final String KEY_TYPE = "type";
        public static final String KEY_STYLE = "style";
        public static final String KEY_ID = "id";
        public static final String KEY_TYPE_KEY = "typeKey";	//adapter用 = type
        public static final String KEY_TYPE_REUSEID = "reuseId";
        public static final String KEY_INDEX = "index";
        public static final String KEY_POSITION = "position";
        public static final String KEY_ITEMS = "items";
        public static final String KEY_HEADER = "header";
        public static final String KEY_FOOTER = "footer";
        public static final String KEY_LOAD_TYPE = "loadType";
        public static final String KEY_LOADED = "loaded";
        public static final String KEY_API_LOAD = "load";
        public static final String KEY_HAS_MORE = "hasMore";
        public static final String KEY_API_LOAD_PARAMS = "loadParams";
        public static final String KEY_MAX_CHILDREN = "maxChildren";
    

    style属性

    	public static final String KEY_BIZ_ID = "bizId";
        public static final String KEY_BACKGROUND_IMAGE = "background-image";
        public static final String KEY_BACKGROUND_COLOR = "background-color";
        public static final String KEY_MARGIN = "margin";
        public static final String KEY_PADDING = "padding";
        public static final String KEY_WIDTH = "width";
        public static final String KEY_HEIGHT = "height";
        public static final String KEY_COLS = "cols";
        public static final String KEY_DISPLAY = "display";	//字体显示风格
        public static final String KEY_ZINDEX = "zIndex";
        public static final String KEY_ASPECT_RATIO = "aspectRatio";
        public static final String KEY_RATIO = "ratio";
        public static final String KEY_ANIMATION_DURATION = "animationDuration";
        public static final String KEY_SLIDABLE = "slidable";
        public static final String KEY_FOR_LABEL = "forLabel";
    

    一,流式布局

    依次填充,满一行换下一行。
    type属性:
    container-oneColumn 单列(一排一)
    container-twoColumn 双列
    container-threeColumn 三列
    container-fourColumn 四列
    container-fiveColumn 五列
    container-flow N列
    style属性:
    margin 卡片的外间距,上右下左 [9,9,9,9],"[9,9,9,9]",[“9”,“9”,“9”,“9”]均可,建议使用第一种
    padding 卡片的内间距,上右下左 [9,9,9,9],"[9,9,9,9]",[“9”,“9”,“9”,“9”]均可,建议使用第一种
    aspectRatio 每一行的宽高比 String “9”
    vGap 垂直方向上,每个组件的间距 String/Number “9”
    hGap 水平方向上,每个组件的间距 String/Number “9”
    background-image 背景图 String https://gw.alicdn.com/tps/TB1dkjfOXXXXXb0aXXXXXXXXXXX-1125-220.png
    background-color 背景色 String “#FFFFFF”
    cols 每列的百分比,如果是N列,可以只写Array中只写N-1项,最后一项会自动填充,如果加一起大于100,就按照填写的来算 Array(String/Number) [“30”,“30”] 或 [30",30]

    二,一拖N(N=2/3/4)布局

    左边一个大的,右边N个小的,可调整比例。
    type属性:
    container-onePlusN 一拖2/3/4
    style属性:
    margin 卡片的外间距,顺序是上右下左 [9,9,9,9],"[9,9,9,9]",[“9”,“9”,“9”,“9”]均可,建议使用第一种
    aspectRatio 整体宽高比 String “9”
    background-image 背景图 String https://gw.alicdn.com/tps/TB1dkjfOXXXXXb0aXXXXXXXXXXX-1125-220.png
    background-color 背景色 String “#FFFFFF”
    cols 设定宽度比例,内容是百分比的数字 Array(String/Number) [“30”,“30”] 或 [30,30]
    rows 设定上下比例,只能有两项 Array(String/Number) [“30”,“30”] 或 [30,30]

    三,浮标布局

    可拖动,自动吸边。
    type属性:
    container-float
    style属性:
    align 相对初始位置来说,初始出现位置的原点 String top_left/top_right/bottom_left/bottom_right
    x 相对原点的横向偏移量 String/Number 9
    y 相对原点的纵向偏移量 String/Number 9
    background-color 背景色 String “#FFFFFF”

    四,固定布局

    固定在某个位置,不可拖动。
    type属性:
    container-fix 固定顶部或者底部,根据属性指定
    container-scrollFix 滚动固定(滚动到某个布局的时候,出现并固定)
    style属性:
    align 相对初始位置来说,初始出现位置的原点, 8(固定底部)默认是bottom_left 9(固定顶部)默认是top_left String top_left/top_right/bottom_left/bottom_right
    x 相对原点的横向偏移量 String/Number 9
    y 相对原点的纵向偏移量 String/Number 9
    background-color 背景色 String “#FFFFFF”
    showType 前一个显示时显示/前一个消失时显示/永远显示(默认永远显示) String “showOnEnter”,”showOnLeave”,”always”

    五,吸顶/吸底布局

    碰到Tangram的顶端或底端就吸住。
    type属性:
    container-sticky 吸顶或吸底,根据属性指定
    style属性:
    margin 卡片的外间距,顺序是上右下左 [9,9,9,9],”[9,9,9,9]”,[“9”,”9”,”9”,”9”]均可,建议使用第一种
    offset 吸住的时候距离顶部或底部的偏移量,单位是系统单位 String/Number “9”
    sticky 固定的位置 enum(start/end),start 表示固定到顶部,end 表示固定到底部,默认 start “start”
    enableScroll 是否平铺&可滚动 Bool true,”false”

    六,轮播布局

    适用于Banner的场景,按页可自动滚动,循环滚动,一页一页的滚动。
    type属性:
    container-banner
    style属性:
    itemRatio 内部 View 的宽高比,宽度=满屏幕, 高度=根据ratio计算高度,建议设置此属性,可预先占位,避免 Banner 有一个高度撑开的过程 Number或者String 2.4
    pageRatio 内部 View 宽度占总屏幕宽度的比例
    margin 卡片的外间距,顺序是上右下左 [9,9,9,9],"[9,9,9,9]",[“9”,“9”,“9”,“9”]均可,建议使用第一种
    padding 卡片的内间距,顺序是上右下左 [9,9,9,9],"[9,9,9,9]",[“9”,“9”,“9”,“9”]均可,建议使用第一种
    autoScroll 自动滚动的间隔,单位毫秒,填写数字大于0就开始自动滚动,默认值 String/Number “3000”,3000
    specialInterval 单独指定每一帧的自动滚动的间隔,单位毫秒,key从0开始计数;与autoScroll配合使用,当未在此声明某一帧的停留时间的时候,使用autoScroll指定的间隔,否则使用此处声明的间隔时间 Map {“1”: “10000”, “2”: “5000”}
    infinite 是否无限滚动 String/Bool “true”,“false”
    indicatorImg1 指示器选中状态的图片,必须带图片宽高比后缀 String
    https://img.alicdn.com/tps/TB16i4qNXXXXXbBXFXXXXXXXXXX-32-4.png
    indicatorImg2 指示器未被选中状态的图片,必须带图片宽高比后缀String https://img.alicdn.com/tps/TB1XRNFNXXXXXXKXXXXXXXXXXXX-32-4.png
    indicatorGravity 指示器位置,居中居左还是居右 String “left”/“right”/“center”
    indicatorPosition 指示器位置,在内部还是在外部 String “inside”/“outside”
    indicatorGap 每个之间的指示器间距 String/Number “9”
    indicatorMargin 指示器相对于布局底端的间距 String/Number “9”
    indicatorHeight 指示器高度 String/Number “9”
    pageWidth 页面宽度,配置了此参数,轮播布局的滚动会变为线性,不配置的话,就是一页一页的滚动 String/Number “100”
    scrollMarginLeft 最左边一帧距离布局左边的间距 String/Number “100”
    scrollMarginRight 最右边一帧距离布局右边的间距 String/Number “100”
    hGap 横向每一帧之间的间距 String/Number “100”

    七,横向线性滚动布局

    连续滚动,不是Banner一页一页的滚动。
    type属性:
    container-scroll
    style属性:
    pageWidth 页面宽度,在iOS上配置了此参数,轮播布局的滚动会变为线性,不配置的话,就是一页一页的滚动,Android需要依赖此选型设置页面宽度 String/Number “100”
    pageHeight 页面高度 String/Number “78”
    hGap 横向每一帧之间的间距(Android不支持) String/Number “100”
    scrollMarginLeft 最左边一帧距离布局左边的间距 String/Number “100”
    scrollMarginRight 最右边一帧距离布局右边的间距(iOS上不支持) String/Number “100”
    hasIndicator 是否显示指示器 Boolean false
    indicatorColor 指示器选中颜色(iOS不支持) Color #FF0000
    defaultIndicatorColor 指示器默认颜色(iOS不支持) Color #666666

    八,瀑布流布局

    type属性:
    container-waterfall
    style属性:
    margin 卡片的外间距,顺序是上右下左 [9,9,9,9],”[9,9,9,9]”,[“9”,”9”,”9”,”9”]均可,建议使用第一种
    vGap 垂直方向上,每个组件的间距 String/Number “9”
    hGap 水平方向上,每个组件的间距 String/Number “9”
    background-color 背景色 String “#FFFFFF”
    column 列数 String/Number “3”或3

    展开全文
  • Tangram for Android 中文文档 Projects of Tangram Android Tangram-Android Virtualview-Android vlayout UltraViewPager iOS Tangram-iOS Virtualview-iOS LazyScrollView Tangram is a modular UI solution ...
  • 本系列文章主要介绍天猫团队开源的Tangram框架的使用心得和原理,由于Tangram底层基于vlayout,所以也会简单讲解,该系列将按以下大纲进行介绍: 需求背景 Tangram和vlayout介绍 Tangram的使用 vlayout原理 ...

    本系列文章主要介绍天猫团队开源的Tangram框架的使用心得和原理,由于Tangram底层基于vlayout,所以也会简单讲解,该系列将按以下大纲进行介绍:

    1. 需求背景

    2. Tangram和vlayout介绍

    3. Tangram的使用

    4. vlayout原理

    5. Tangram原理

    6. Tangram二次封装

    本文将对Tangram进行初步讲解。

    基于Tangram最新源码分析

    笔者Demo代码

    Tangram

    Tangram和vlayout介绍这篇文章提到过,Tangram通过解析json模板得到布局方式Card和具体视图Cell,然后将Card转换成对应的vlayoutLayoutHelper来进行测量和布局,如下,

    官网的架构图如下,

    Card转成LayoutHelper

    跟进TangramActivityengine.setData(data)

    //BaseTangramEngine.java
    void setData(T data) {
        //模板解析,json文件 -> JSONArray -> List<Card>
        List<C> cards = mDataParser.parseGroup(data, this);
        this.setData(cards);
    }
    
    void setData(List<C> data) {
        this.mGroupBasicAdapter.setData(data);
    }
    

    来到GroupBasicAdapter

    //GroupBasicAdapter.java
    void setData(List<L> cards, boolean silence) {
        //把cards转成vlayout的layoutHelpers
        setLayoutHelpers(transformCards(cards, mData, mCards));
        if (!silence)
            notifyDataSetChanged();
    }
    
    //cards指json模板中的多个布局方式card,
    //data指每个card里边的具体视图cell
    //rangeCards指一段管辖范围内所对应的布局方式card
    //假设第1个card对应ColumnLayoutHelper,有3个元素,则管辖范围是[0,2]
    //第2个card对应OnePlusNLayoutHelper,有4个元素,则管辖范围是[3,6],以此类推
    List<LayoutHelper> transformCards(List<L> cards, List<C> data,
                                      List<Pair<Range<Integer>, L>> rangeCards) {
        //data.size()初始值为0
        int lastPos = data.size();
        List<LayoutHelper> helpers = new ArrayList<>(cards.size());
        for (int i = 0, size = cards.size(); i < size; i++) {
            //遍历每个card
            L card = cards.get(i);
            //获取card的类型,如列布局container-fourColumn
            final String ctype = getCardStringType(card);
            //获取card内的cell数组
            List<C> items = getItems(card);
            //如果card里边没有cell,即没有视图,直接跳过
            if (items == null) {
                continue;
            }
            //记录每个card里边的多个cell
            data.addAll(items);
            int offset = lastPos;
            lastPos += items.size();
            //记录每一段管辖范围,和其对应的card
            rangeCards.add(Pair.create(Range.create(offset, lastPos), card));
            //获取card对应的LayoutHelper,暂不深究
            LayoutBinder<L> binder = mCardBinderResolver.create(ctype);
            LayoutHelper helper = binder.getHelper(ctype, card);
            if (helper != null) {
                //设置cell个数
                helper.setItemCount(items.size());
                helpers.add(helper);
            }
        }
        return helpers;
    }
    

    Card被转换成LayoutHelper

    转换完成后,调用了notifyDataSetChanged,是如何显示到RecyclerView上的呢?

    RecyclerView展示

    跟进TangramActivityengine.bindView(recyclerView)

    //BaseTangramEngine.java
    void bindView(@NonNull final RecyclerView view) {
        this.mContentView = view;
        //设置VirtualLayoutManager
        this.mContentView.setLayoutManager(mLayoutManager);
        //设置性能监控,mLayoutManager负责监控cell的耗时
        mLayoutManager.setPerformanceMonitor(mPerformanceMonitor);
        if (mGroupBasicAdapter == null) {
            this.mGroupBasicAdapter = mAdapterBuilder.newAdapter(mContext, mLayoutManager, this);
            //设置性能监控,mGroupBasicAdapter负责监控card和cell的耗时
            mGroupBasicAdapter.setPerformanceMonitor(mPerformanceMonitor);
            //错误报告
            mGroupBasicAdapter.setErrorSupport(getService(InternalErrorSupport.class));
        }
        if (mContentView.getRecycledViewPool() != null) {
            //设置RecyclerView缓存池,InnerRecycledViewPool装饰了RecycledViewPool
            mContentView.setRecycledViewPool(new InnerRecycledViewPool(mContentView.getRecycledViewPool()));
        }
        //注册服务,暂不深究
        register(GroupBasicAdapter.class, mGroupBasicAdapter);
        register(RecyclerView.RecycledViewPool.class, mContentView.getRecycledViewPool());
        //设置适配器
        this.mContentView.setAdapter(mGroupBasicAdapter);
    }
    

    可见RecyclerView设置的适配器是GroupBasicAdapter,看下我们比较关心的几个方法,

    //GroupBasicAdapter.java
    
    int getItemViewType(int position) {
        C data = mData.get(position);
        //内部缓存了Map<String, Integer> mStrKeys
        //String就是cell名字如SingleImageView,Integer就是一系列从0开始递增的ViewType
        return getItemType(data);
    }
    

    官方Demo早期用了int来声明Cell,这样容易混乱,不利于在json模板里表意,现在改成了String来声明(为此还做了些兼容代码),建议直接使用String来注册,可参考Tangram的使用

    {
        "id": "banner1",
        "type": "container-oneColumn",
        "style": {
            "aspectRatio": 3.223
        },
        "items": [
            {
                "bizId":"item1",
                "type": 110,  //不要再使用int声明cell,建议使用唯一字符串如SingleImageView
                "msg": "info1"
            },
            {
                "bizId":"item2",
                "type": 110,  //不要再使用int声明cell,建议使用唯一字符串如SingleImageView
                "msg": "info2"
            }
        ]
    }
    

    然后看下onCreateViewHolderonBindViewHolder

    //GroupBasicAdapter.java
    
    BinderViewHolder<C, ? extends View> onCreateViewHolder(ViewGroup parent, int viewType) {
        //根据viewType得到cell名字
        String cellType = getCellTypeFromItemType(viewType);
        //大概是通过cellType帮我们创建对应的view,暂不深究
        ControlBinder<C, ? extends View> binder = mCompBinderResolver.create(cellType);
        //一个普通的ViewHolder,提供了bind方法
        BinderViewHolder binderViewHolder = createViewHolder(binder, mContext, parent);
        return binderViewHolder;
    }
    
    void onBindViewHolder(BinderViewHolder<C, ? extends View> holder, int position) {
        //获取cell
        C data = mData.get(position);
        //绑定cell
        holder.bind(data);
    }
    
    //省略调用链:
    //BinderViewHolder.bind -> BaseCellBinder.mountView -> MVHelper.mountView
    // -> MVHelper.postMountView -> ITangramViewLifeCycle.postBindView
    
    //回调到业务层,如TestView.java
    void postBindView(BaseCell cell) {
        //业务逻辑
        textView.setText("xxx");
    }
    

    至此,整个流程就跑通了。

    参考文章

    展开全文
  • Tangram 知识图谱

    2020-04-20 18:58:53
    为了方便大家对 Tangram 有个全局的了解,做了一张图谱做指导。 相关开源库 Android Tangram-Android Virtualview-Android vlayout UltraViewPager iOS Tangram-iOS Virtualview-iOS LazyScrollView ...
  • Tangram 的基础 —— vlayout
  • 主要介绍了使用tangram框架响应式加载图片的方法,大家可以参考使用
  • 一个 Vagrant 虚拟机 (VM),用于设置和运行 Tangram WebGL 矢量地图显示库 ( )。 (虚拟机是一种操作系统模拟器。它运行 Ubuntu,这是最流行的 Linux 版本之一。) 现场公开演示: : ###要求: VirtualBox ...
  • Tangram 是阿里出品、用于快速实现组合布局的框架模型,在手机天猫 Android & iOS版 内广泛使用今天我将对Tangram 模型 进行全面介绍,希望你们会喜欢。 目录1. 为什么要使用 Tangram 模型在讲解 Tangram模型 前,...
  • 使用 Phaser 构建的 Tangram 2D Platformer 入门 bundle install shotgun -p 3000 -o 0.0.0.0 在浏览器中访问http://localhost:3000/ TanGram 在这个 2D 平台游戏中,你必须帮助 Tan 阻止邪恶的鸽子并回家! 基于...
  • tangram-to-googlemaps-源码

    2021-03-07 06:32:35
    tangram-to-googlemaps
  • basic on css3 tangram 每次hover七巧板变化 持续更新中。。。 demo地址:
  • Android-Tangram-Android.zip

    2019-09-17 12:09:44
    Android-Tangram-Android.zip,tangram是一个模块化的ui解决方案,用于动态构建本机页面,包括android的tangram、ios的tangram甚至后端cms。这个项目提供了android上的sdk。,安卓系统是谷歌在2008年设计和制造的。...
  • 围观tangram

    2012-05-07 15:18:21
    Tangram开源将近一周,持续围观了几天。写一个简单的围观笔记吧。 Tangram官方网站。 http://tangram.baidu.com/tangram/ 围观社区: 简易社区,直接使用tieba。反馈的信息不大多。 按优点、不足、疑问、...
  • tangram2.6(XE2)

    2013-03-28 09:30:21
    tangram2.6,tangram框架,适用于delphi XE2集成开发环境,附带demo。
  • 主要介绍了tangram.js库实现js类的方式,结合实例形式分析了tangram.js库实现类的创建、继承等相关操作技巧,需要的朋友可以参考下
  • tangram2.6(D2010).rar

    2019-06-28 10:33:50
    tangram2.6(D2010).rar
  • tangram2.6(XE2).zip

    2019-06-28 10:45:54
    tangram2.6(XE2).zip
  • tangram2.6(D7).rar

    2019-06-28 10:39:52
    tangram2.6(D7).rar
  • 百度tangram框架开发工具小结.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,075
精华内容 1,230
关键字:

tangram