首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    跨平台开发框架 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.7K30

    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))

    2.2K31

    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 和

    1K30

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

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

    1.2K10

    绘制优化

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

    1.1K10

    Android冷启动优化终极指南:让APP比微信还快的7个黑科技

    大家好,我是稳稳,一个曾经励志用技术改变世界,现在为随时失业做准备的中年奶爸程序员,与你分享生活和学习的点滴。 最近感觉写作的欲望在持续降低,主要是正反馈太少了。一堆转发的,点赞在看的寥寥无几。...XML布局异步Inflate:通过AsyncLayoutInflater实现非阻塞加载 2....黑科技5:动态库加载颠覆方案 痛点:System.loadLibrary()触发磁盘I/O和重定位操作。 方案: 1. .so文件内存加载:通过dlopen直接加载内存中的so镜像 2....黑科技方案耗时 进程创建 180ms 80ms 类加载 220ms 75ms 首帧渲染 420ms 150ms 总耗时 1.8s 0.4s 四、面试高频考点解析 Q1:冷启动流程中ActivityThread和AMS...初级方案:使用AsyncLayoutInflater,但需处理线程同步问题 2. 进阶方案:Hook LayoutInflater#inflate(),结合预编译的ViewStub池 3.

    1.3K10
    领券