zm.blog

select * from learn


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

vlayout使用说明(二)

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

前言

vlayout 的设计思路请参考Tangram 的基础 —— vlayout(Android)。框架已经开源,欢迎移步到 github上指教。本文介绍 vlayout 的基本布局样式上的属性说明。

margin, padding

Margin, padding就是外边距、内边距,概念与Android系统的margin, padding一样,但也有不同的地方:

  • 它不是整个RecyclerView页面的margin和padding,它是每一块LayoutHelper所负责的区域的margin和padding。
  • 一个页面里可以有多个LayoutHelper,意味着不同LayoutHelper可以设置不同的margin和padding。
  • LayoutHelper的margin和padding与页面RecyclerView的margin和padding可以共存。
  • 目前主要针对非fix类型的LayoutHelper实现了margin和padding,fix类型LayoutHelper内部没有相对位置关系,不处理边距。

margin-padding

阅读全文 »

vlayout使用说明(一)

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

前言

vlayout 的设计思路请参考Tangram 的基础 —— vlayout(Android)。框架已经开源,欢迎移步到 github上指教。本文介绍 vlayout 的基本使用。

默认实现

  • 默认通用布局实现,解耦所有的View和布局之间的关系: Linear, Grid, 吸顶, 浮动, 固定位置等。
    • LinearLayoutHelper: 线性布局
    • GridLayoutHelper: Grid布局, 支持横向的colspan
    • FixLayoutHelper: 固定布局,始终在屏幕固定位置显示
    • ScrollFixLayoutHelper: 固定布局,但之后当页面滑动到该图片区域才显示, 可以用来做返回顶部或其他书签等
    • FloatLayoutHelper: 浮动布局,可以固定显示在屏幕上,但用户可以拖拽其位置
    • ColumnLayoutHelper: 栏格布局,都布局在一排,可以配置不同列之间的宽度比值
    • SingleLayoutHelper: 通栏布局,只会显示一个组件View
    • OnePlusNLayoutHelper: 一拖N布局,可以配置1-5个子元素
    • StickyLayoutHelper: stikcy布局, 可以配置吸顶或者吸底
    • StaggeredGridLayoutHelper: 瀑布流布局,可配置间隔高度/宽度
  • 上述默认实现里可以大致分为两类:一是非fix类型布局,像线性、Grid、栏格等,它们的特点是布局在整个页面流里,随页面滚动而滚动;另一类就是fix类型的布局,它们的子节点往往不随页面滚动而滚动。
  • 所有除布局外的组件复用,VirtualLayout将用来管理大的模块布局组合,扩展了RecyclerView,使得同一RecyclerView内的组件可以复用,减少View的创建和销毁过程。
阅读全文 »

Tangram的基础 vlayout for android

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

前言

vlayout 是手机天猫 Android 版内广泛使用的一个基础 UI 框架项目 提供了一个用于RecyclerView的自定义的LayoutManger,可以实现不同布局格式的混排,目标是支撑客户端native页面的快速开发。它也是 Tangram 框架的基础模块,现已开源,欢迎移步到 github 上指教。

简介

背景

Android中UI性能消耗主要来自于两个方面:

  1. 布局层次嵌套导致多重measure/layout
  2. View控件的创建和销毁

除了从在实践中注意消除嵌套布局,Android官方也提供了ListView/GirdView/RecyclerView等基础空间来处理View的回收与复用。

但很多时候我们都会碰到视觉需要在一个长列表下做多种类型的布局来分配各种元素, 特别是电商业务各类首页,频道等页面,元素结构复杂多样。

这种时候实现的选择有不用复用,直接用各个组件进行拼接,但这样会损失性能;选择一个主要的复用容器, 如ListView或者RecyclerView+LinearLayoutManager等,然后在其中使用嵌套等方式对其他的布局方式进行处理,这样一个是减少了复用的能力,另一个是如果需要嵌套无法兼容的布局的时候,需要处理嵌套滑动的情况。

既然RecyclerView提供了基础的回收复用功能,也支持LayoutManager的扩展,那么能不能用一个LayoutManager就完成所有的布局类型呢? 感觉的这是一个不错的方向,目前在 github 上也能找到类似的项目,但是这些之前也埋有不少bug, 大部分都是因为在一些特殊场景下和RecyclerView相关的其他的类一起使用时出现问题。 为了避免掉入bug大坑,我们决定基于LinearLayoutManager来做改造。

阅读全文 »

Tangram七巧板实现界面动态化

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

Tangram Logo

Tangram,七巧板,几块简单的积木就能拼出大千世界。我们用Tangram来命名这套界面方案,也是希望他能像七巧板一样可以通过几块积木就搭出丰富多彩的界面。

号外:Tangram开源了!通过http://tangram.pingguohe.net可以了解更多技术细节,直接去GitHub查看iOS(https://github.com/alibaba/tangram-ios)和Android(https://github.com/alibaba/tangram-android)源码。

阅读全文 »

页面动态化的基础Tangram

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

什么是Tangram

标题

顾名思义,Tangram中文名是七巧板的意思,我们希望这个框架提供一系列基本单元,就像积木块一样,通过快速拼装就能搭建出一个页面或者调整页面的结构。重运营的业务特别是电商业务,往往讲究灵活多变,需要对线上业务做实时调整,此类页面动态化的需求便应运而生。

阅读全文 »

Tangram知识图谱

发表于 2018-11-08 | 分类于 Android , Tangram | | 阅读次数:

为了方便大家对 Tangram 有个全局的了解,做了一张图谱做指导。

img

阅读全文 »

node升级的正确方法

发表于 2018-11-07 | 分类于 前端 , node | | 阅读次数:

安装方法:

1.查看node版本,没安装的请先安装;

1
2
 $  brew install node
 $  node -vn

2.清楚node缓存;

1
$  sudo npm cache clean -f

3.安装node版本管理工具’n’;

1
$  sudo npm install n -g
阅读全文 »

23种设计模式的优点与缺点概况

发表于 2018-11-06 | 分类于 Java , 设计模式 | | 阅读次数:

设计模式

标签(空格分隔): 设计模式优点 应用场景

单例模式

优点:

  • 只有一个实例,减少了内存开支;
  • 可以避免对系统资源的多重占用;
  • 可以在系统中设置全局的访问点,优化和共享资源访问;

缺点:

  • 没有接口,扩展困难;
  • 对测试开发不利;
阅读全文 »

设计模式之23种常用模式

发表于 2018-11-06 | 分类于 Java , 设计模式 | | 阅读次数:

在常用的23种设计模式中,根据设计模式的功能,我们又可以把这23个设计模式分为三大类:创建类模式,结构类模式,行为类模式;

创建类模式

  • 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一类,使一个类的实例化 延迟到其子类;
  • 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;
  • 抽象工厂模式,为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。
  • 单例模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例;
  • 原型模式,通过对象复制来实现的模式就叫做原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
阅读全文 »

设计模式之6大设计原则

发表于 2018-11-06 | 分类于 Java , 设计模式 | | 阅读次数:

单一职责原则

单一职责的定义为:应该有且仅有一个可以引起类的变更,也就是一个职责一个接口(业务逻辑的划分);
好处:

  • 类的复杂性降低;
  • 可读性提高;
  • 可维护性提高;
  • 变更引起的风险降低;一个接口修改只对相应的实现类有影响,对其他接口没有影响
阅读全文 »
1…293031…38
ZhangMiao

ZhangMiao

Android/Flutter Developer

379 日志
58 分类
143 标签
RSS
E-Mail QQ Github StackOverflow
友情链接
  • Kaisir
  • Liujianhui
  • Leo
  • Hongyang
  • Liuwangshu
  • Jspang
  • Blankj
  • WuXiaoLong
  • Molunerfinn
  • Ofind
  • Gcssloop
© 2024 ZhangMiao
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次 本站总访问量 次