Tristan Blog

Da weiß ich die Stürme schon und bin erregt wie das Meer.

自定义ViewGroup原理

ViewGroup

自定义ViewGroup是在Android应用中创建自定义布局容器的方式之一。它允许你以完全自定义的方式定义子视图的布局和交互。下面是自定义ViewGroup的基本原理: 1.继承合适的ViewGroup类: 创建一个新的Java类,并继承自合适的ViewGroup类,如ViewGroup、LinearLayout、RelativeLayout等。你可以选择基类以满足你的布局需求。 pu...

自定义View过程

View

自定义View是在Android应用中实现自定义UI组件的常见方式之一。下面是一个基本的自定义View的步骤: 1.创建一个新的Java类, 并继承自合适的View类(例如View、ImageView等)或其子类,根据你的需求选择合适的基类。 public class CustomView extends View { // 构造函数 public CustomView(...

首页feed流滑动实现图片预加载和数据无感加载方案

RecycleView优化

背景 内容时代已来,很多APP都在用feed流的形式展示内容;同时呢,现如今又是一个存量用户的时代,各家APP对自身的用户体验越发重视。feed流无感加载,可以免除用户等待请求数据的时间,对提升用户浏览体验将会起到引领的作用。 列表控件通常提供三种状态给开发者使用,分别是:拖动态、滑动态和闲置态。通常,为了减少不必要的性能损耗,列表处于滑动态时不加载图片。但是,列表的滑动过程是一个...

一种Application初始化前获得APP启动参数的方法

隐私弹窗实现原理

背景 APP在启动时通常可以带一些参数,Android系统会在Application初始化后,紧接着根据这些参数创建相应的页面Activity,同时会把这些参数传递给页面,然后完成程序到页面的启动。从系统提供的能力看,启动参数只有在启动页创建后通过页面Intent才可以获取,Application的初始化是在启动页创建之前完成的,它的初始化方法中系统并没有给其提供启动参数。 问题 一些在A...

统一富媒体动效控件

一种与RecycleView搭配实现高效复用的统一富媒体动效控件

背景 富媒体当下各种样式的控件庞乱繁杂,接口方法不统一,开发者经常使用富媒体控件开发时需要注意的细节较多,比如要事先了解多种控件的api请求方法。 另外,富媒体当下发展得很快,快速迭代滋生了媒体控件的多和杂(工程中图片和视频类控件有很多种)。 当下环境的缺口是,整个市场没有一个统一封装的富媒体动效控件,整个应用级别目前没有一个整体的富媒体资源缓存机制,也没有一个与列表类控件形成高效复用的综合...

Android反编译apk步骤

逆向开发

APK反编译 工具Apktool 官网下载地址 apktool下载 步骤详解 下载apktool 鼠标移到wrapper script,右键,保存链接命名为apktool。mac会保存为文本的形式 下载apktool-2,下载完之后,修改名字为apktool.jar 之后把两个文件都移到 /usr/local/bin 文件中,我是通过,f...

ViewPager2离屏加载

解决ViewPager无法禁用预加载难题

背景 在开发首页、城市选择页和我的优惠券页面时,都使用了ViewPager组件处理横向页面切换进行分屏展示。ViewPager满足基本的功能可能是OK的,但要说完胜却有不足。比如,1)无法将离屏缓存页参数设置为小于1的数,即不能禁用预加载;2)无法通过Adapter动态更新数据;3)禁止手势滑动翻页后,依然会有页面滚动的迹象。 预加载 ViewPager默认情况下切换到当前页面时,会默认预...

Walle路由库优化设计方案

组件化解耦思想

背景 路由库Walle的存在很好的解除了业务层和底层库的直接耦合,但是随着各个底层库的接入,这时发现一些问题。比如:接入定位库后,实现异步回调功能变得复杂;之后在设计上,因为封装返回数据Bean和异步逻辑处理,导致多产生一个库WalleExtLib。而我们对这个库的定义自始是不明确的,最后影响了项目中的整个依赖关系结构。 路由职能 解耦 在两个库不依赖的前提下实现两者之间的页面和功能...

Flutter实现加载更多的低阶和高阶方式

通过对基础组件的封装学习Flutter高阶组件是如何产出的

基础方式 Flutter关于加载更多最基本也是最简单的一种实现方式是:判断当ListView的构造器在开始构造最后一条布局的时候,将此布局替换为“加载更多”的布局。 首先,需要在原来的列表的item的数量上加1,为最后一项“加载更多”留个位置。 当列表滑到底部,此时“加载更多”的布局相继显示,这里就有了“加载更多”;但是这里只是完成了第一步工作,因为真正加载更多数据的能力还没有的。 ...

使用多种工具分析解决首页的性能问题

APP性能优化中应用到的几个工具

做好性能优化需求,就要全面分析并优化性能不达标的低质量代码。 比如,你人工找到了一个觉得耗时的方法,但是通常可能这只是多个问题中的一个凸显问题,很巧被你发现了,做到全面分析就是为了避免片面解决问题。 还有,你可能在发现问题后对问题进行了处理,但是通常不知道剪短了多少耗时算是优化了这个低质量代码,那么就需要有个衡量或是对比尺子来评判你优化的内容是否已达标。 要对性能优化做到全面且达标,单...