首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

跨平台开发框架 MvvmCross 初体验

MvvmCross MvvmCross-Tutorials 两个库添加为 submodule ,方便进行源代码调试学习。...典型的 MvvmCross 跨平台应用应当包括: 一个独立的 Core 项目包含所有的逻辑代码;每个目标平台一个 UI 项目, 包含本地化的视图以及 Core 进行交互的代码。...接下来要添加对 MvvmCross 的引用, Core 项目需要引用的 dll 文件是 Cirrious.CrossCore Cirrious.MvvmCross 。...Cirrious.MvvmCross.Binding Cirrious.MvvmCross.Binding.Droid 从引用列表可以看出, iOS 项目添加的引用是等价的。...Android 版本的 Setup iOS 版本相比, 除了基类不同之外, 其余完全相同, 代码如下: using Cirrious.MvvmCross.Droid.Platform; using

1.3K30

MvvmCross 框架中的数据绑定语法

MvvmCross 框架中的数据绑定语法 数据绑定一直是 MvvmCross (Mvx) 框架的核心, 随着 Mvx 版本的版本更新, 绑定语法由 Json 变化到了 Swiss 语法, 并逐渐向 Tibet...由于基于 Json 的绑定语法在 Mvx 3.0 之后的版本已经标记为过时, 不再支持, 因此不做介绍, 本文详细介绍 Swiss Tibet 语法。...Mvx 实现了跨平台的数据绑定, 概念与 WPF/Silverlight/WinPhone (Xaml) 的数据绑定一致, 可以在 Android iOS 平台使用, 这也正是 Mvx 框架的魅力所在...如果需要 FallbackValue , 则继续添加: , FallbackValue=$FallbackValue$ $FallbackValue$ 允许的内容 $ParameterValue$ 一致...嵌套转换 Tibet 还支持嵌套, 比如可以将上面的 Trim Length 一起使用, 如下所示: Text Length(Trim(FirstName + ' ' + LastName))

1.6K31

MvvmCross 框架中 ViewModel 之间的导航以及生命周期

MvvmCross 框架中 ViewModel 之间的导航以及生命周期 介绍 MvvmCross (Mvx) 框架中的 ViewModel 之间的导航以及 ViewModel 的生命周期。...MvxRequestedBy requestedBy = null ) where TViewModel : IMvxViewModel { ... }; 这是使用字典参数的重载版本, 可以传入一个 Key ...int a, string b, float c) 要调用这种签名类型的参数, 需要在 ShowViewModel 方法的参数中使用匿名类 (anonymous class) , 并且匿名类的属性名称必须...这个方法支持的参数形式 Init 相同, 一般 Mvx 期待的形式如下所示: public class DetailViewModel : MvxViewModel { // ......= _name; bundle.Data["Position"] = _position.ToString(); } } Start 调用完 Construction 、 Init

79230

Android 布局优化真的难,从入门到放弃

image.png 前言 Android的绘制优化其实可以分为两个部分,即布局(UI)优化卡顿优化,而布局优化的核心问题就是要解决因布局渲染性能不佳而导致应用卡顿的问题,所以它可以认为是卡顿优化的一个子集...GPU只向Back Buffer中写入绘制数据,且GPU会定期交换Back BufferFrame Buffer,交换的频率也是60次/秒,这就与屏幕的刷新频率保持了同步。...AsyncLayoutInflater方案 AsyncLayoutInflater 是来帮助做异步加载 layout 的,inflate(int, ViewGroup, OnInflateFinishedListener...Compose 并不是对 View ViewGroup 这套系统做了个上层包装来让写法更简单,而是完全抛弃了这套系统,自己把整个的渲染机制从里到外做了个全新的。...3.介绍了一些布局加载优化的方法与手段(AsyncLayoutInflater,X2C,Anko,Compose等)。

83010

绘制优化

优化原则 一些过度绘制是无法避免的,比如之前说的文字背景导致的过度绘制,这种是无法避免的。 应用界面中,应该尽可能地将过度绘制控制为 2 次(绿色)及其以下,原色蓝色是最理想的。...粉色红色应该尽可能避免,在实际项目中避免不了时,应该尽可能减少粉色红色区域。 不允许存在面积超过屏幕 1/4 区域的 3 次(淡红色区域)及其以上过度绘制。...除了 clipRect() 以外,还可以使用 canvas.quickreject() 来判断某个矩形相交,如果相交的话,则可以跳过相交的区域减少过度绘制。...是调用了 LayoutInflater.inflate(int, ViewGroup, false),因此如果需要加到 parent view中,就需要我们自己手动添加; AsyncLayoutInflater...).inflate(R.layout.activity_main, null, new AsyncLayoutInflater.OnInflateFinishedListener() {

87710

得物布局构建耗时优化方案实践

AsyncLayoutInflater AsyncLayoutInflater 是由 Android Google 官方提供的异步 Inflate API,其主要思路是将 Inflate 操作放在异步线程并行操作...但是普通布局 Merge 布局的实现并不一样。 对于 Include 普通布局,逻辑要复杂的多。...直接生成字节码的方案增加了项目的升级维护成本,且不便于业务侧同学验证生成的 Java 布局代码是否正确。...在 Androidx 中已经有提供了 AsyncLayoutInflater 用于进行 XML 的异步加载,在这个类基础上可以封装一个异步预加载工具,但是实际使用下来会发现直接使用 AsyncLayoutInflater...五、框架对比 六、结论 通过实践上述优化方案,可以显著减少布局构建的耗时,提高应用的性能用户体验。

17310
领券