Android
文章平均质量分 83
钟小明_
这个作者很懒,什么都没留下…
展开
-
Android UI适配方案
大纲使用dp而不是px尽量使用自动适配布局,而不要指定分辨率使用宽高限定符values-1080x1920,以1080P为基准计算每种常见分辨率对应的尺寸。需要尽可能全的添加各种设备的分辨率(有工具)容错性不足,如果设备分辨率不能精确匹配对应限定符,会默认使用统一默认的dimens第三方自动适配UI框架原理:自定义RelativeLayout,在onMeasure中对控件分辨率做变换第三方框架,维护性很成问题一些自定义View,处理比较麻烦最小宽度限定符,类似宽高限定符原创 2021-11-04 16:01:32 · 1091 阅读 · 0 评论 -
ViewPager2的使用
Jetpack与ViewPager2Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。2018年Google推出了Jetpack架构组件,旨在帮助开发者轻松构建更稳定、更健壮、以及更可维护的应用程序。Jetpack为之前混乱的Android开发生态提供了一种更规范的解决方案,可以说是Google为了规范Android开发生态迈进的一大步。Google对于Jetpack也是原创 2021-10-27 17:07:23 · 4812 阅读 · 1 评论 -
Lifecycle-生命周期感知型组件
简介Lifecycle是Google推荐的架构组件之一.生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移入组件本身中。我们来描述一种业务场景来帮助我们更好的理解上面这段话的意义。当我们的Activity中使用了自定义的播放器组件时,我们通常需要在Activity的onResume和onPause中原创 2021-10-26 17:14:43 · 215 阅读 · 0 评论 -
Lottie——强大的动画渲染框架
概述Airbnb开源的强大的动画框架,适用于Android,IOS,React Native和Web。可以使用AE导出的JSON格式的动画,并解析为原生动画效果。特点:跨平台 —— 一份动画效果,多平台通用。多种方式导入动画效果 —— 可从assets,sdcard,网络加载动画资源,支持动态更新。原生实现之前在Android中要实现相对复杂的动画效果一般有三种方式:1.帧动画,在程序中添加N张动画图片,通过帧动画实现动画效果,缺点是图片太多导致apk过大。2.Gif,使用动画gif实现动画原创 2021-10-26 17:08:32 · 564 阅读 · 0 评论 -
SparseArray和SparseArrayCompat
特性Android 4.4之后提供的数据结构类型,为了兼容Android低版本同时提供了SparseArrayCompat,实际是一个东西。只支持使用int - Object的方式存储数据,使用数组结构存储数据。通过二分查找法优化了查找效率,相比HashMap最高提高50%的效率。不适合存储大量数据,因为要使用二分查找法所有数组中元素已排序,在数据量大时插入和移除元素效率较低,适合存储几百个元素的场景。优化缓存机制,移除元素时并不立即删除数组中的数据,而是将元素标记为删除,如果有元素插入时可以直原创 2021-10-19 11:28:30 · 902 阅读 · 0 评论 -
正则表达式
简介正则表达式是由普通字符(字母、数字和下划线)和特殊符号(元字符)组成的,用来描述匹配一个字符串集合的模式。通常用来检索、替换和分割那些符合模式的字符串。特点正则表达式的特点是:灵活性、逻辑性和功能性非常强;可以迅速地用极简单的方式达到字符串的复杂控制。对于刚接触的人来说,比较晦涩难懂。由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则原创 2021-10-19 11:26:48 · 407 阅读 · 0 评论 -
Android UI性能优化——ViewStub和Merge的使用
ViewStub的使用简介ViewStub 是一种没有任何维度的轻量型视图,它不会绘制任何内容或参与布局。ViewStub是一种没有大小,不占用布局的View。直到当调用 inflate() 方法或者可见性变为VISIBLE时,才会将指定的布局加载到父布局中。ViewStub加载完指定布局之后会被移除,不再占用空间。(所以 inflate() 方法只能调用一次 )因为这些特性V...原创 2019-12-27 16:51:03 · 752 阅读 · 1 评论 -
TvTabLayout——封装一个Android TV端易用的TabLayout
概述Tab + ViewPager是我们常用的一种Android端UI架构,Android系统提供了TabLayout等控件用于实现与ViewPager配套使用问题,但是原生的TabLayout使用在Android TV端并不友好,需要添加复杂的逻辑解决按键与焦点问题,本文旨在封装一个简单的TvTabLayout控件,方便实现Android TV端的常用功能。TvTabLayout简介...原创 2019-12-27 16:49:35 · 2055 阅读 · 0 评论 -
Android Fragment + ViewPager的懒加载实现
概述Android日常开发中除了四个组件之外,还有一种使用频率很高的组件——Fragment。在使用时我们通常需要在Fragment的各种生命周期方法中处理数据加载、页面刷新和资源释放等逻辑操作。但是当Fragment遇上了ViewPager,事情就变得有点不一样了。Fragment的生命周期变得不再那么可控,当显示Fragment A时,相邻的Fragment B的一些生命周期方法也会触发。...原创 2019-12-09 13:47:32 · 350 阅读 · 0 评论 -
Android动画篇——Android 5.0揭露动画
Reveal Effect是Android 5.0中添加的新的动画效果,是一种类似于水波纹效果的从一个点向周围扩散或者从四周向一个点集中的动画效果。仅在支持Android 5.0及更高版本。使用使用及其简单,Android API中提供了一个ViewAnimationUtils类用于实现Reveal效果,此类仅有一个静态方法createCircularReveal返回了一个Animator对...原创 2019-08-28 17:35:17 · 344 阅读 · 0 评论 -
Android动画篇——Android 5.0触摸反馈动画
RippleDrawable是Android 5.0之后添加了一种触摸反馈动画,在控件被触摸时触发水波纹效果。此效果只在Android 5.0以上设备上生效。系统自带效果Android 5.0之后Button默认自带Ripple效果,同时系统提供了2个默认的Ripple效果。//有边界android:background="?android:attr/selectableItemBackg...原创 2019-08-28 17:33:38 · 491 阅读 · 0 评论 -
Android——页面Loading控件封装
概述在Android开发过程中通常在有网络请求的页面,需要设计加载中、加载失败等UI效果,来提升用户体验。本文就此需求实现了一个简单的LoadingLayout控件,可以比较方便的实现加载中、加载失败、网络错误等UI效果,并提供失败点击重试等操作。实现思路常用一般有以下几种请求状态:LOADING_STATE 加载中状态LOAD_SUCCESS_STATE 加载成功状态LOAD_F...原创 2019-07-03 11:40:16 · 3829 阅读 · 0 评论 -
Android动画篇——ViewPropertyAnimator
之前我们介绍了PropertyAnimator,这一篇是之前文章的延伸。之前我们说过PropertyAnimator并不是针对View进行设计的动画类,而是为了解决对任意对象的指定属性值进行连续变换而出现的。而ViewPropertyAnimator出现的意义恰恰在于他是View而生的,他解决了View在使用属性动画时步骤繁琐,效率低下(使用PropertyAnimator为View设置多种动画,...原创 2019-07-02 17:33:29 · 648 阅读 · 0 评论 -
android动画篇——仿小米计算器切换动画效果
实现思路此效果实现用到了:LayoutTransition和ObjectAnimator的相关知识思路:当点击切换按钮时顶部ViewGroup和左侧ViewGroup可见性设置为Gone,并自动开始执行LayoutTransition的DISAPPEARING动画,同时中间的数字键盘区执行放大动画效果,反之同理。代码实现/*** 实现小米计算器科学计算器与普通计算器的切换动画效果*/...原创 2019-07-02 17:32:36 · 522 阅读 · 0 评论 -
Android动画篇——Interpolator展示控件实现
上几篇我们讲解了Interpolator的作用和自定义Interpolator的实现方式,这一篇我们通过自定义一个Interpolator曲线展示控件来更加深入的了解Interpolator的原理。原理之前我们已经讲过Interpolator的作用原理,我们再来回忆一下:动画在执行过程中会不断地调用Interpolator的getInterpolation方法并传入一个当前动画执行时间进度的...原创 2019-07-02 17:29:15 · 346 阅读 · 0 评论 -
Android中常用的加密算法——AES加密
上一篇博客介绍了MD5加密算法,MD5加密不可逆的特性决定了在很多场景下并不适用。如在某些需要对加密后的密文进行解密使之可读的场景下,就需要使用可逆加密算法实现,常用的可逆加密算法有:AES对称加密算法RSA非对称加密算法对称与非对称对称加密 对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算...原创 2018-08-15 11:29:35 · 3451 阅读 · 0 评论 -
使用ActivityLifecycleCallbacks管理Activity
Android在API14之后添加了用于监听应用Activity生命周期的回调接口ActivityLifecycleCallbacks,使用时需要在Application中进行注册。 可以看到ActivityLifecycleCallbacks中的方法跟Activity生命周期方法基本是一致的。ActivityLifecycleCallbacks的注册与取消注册public cl...原创 2018-08-28 10:15:26 · 961 阅读 · 0 评论 -
Android中常用的加密算法——RSA加密
在上一遍Android中常用的加密算法——AES加密中我们介绍了对称加密和非对称加密,对称加密由于加密和解密使用同一个秘钥因此安全性与非对称加密相比要低得多。这一篇我们就来介绍一种被广泛应用的非对称加密——RSA加密。RSA加密算法RSA是一种应用十分广泛的非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔...原创 2018-08-24 17:21:07 · 960 阅读 · 0 评论 -
APK反编译
学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或...转载 2018-09-11 09:24:22 · 234 阅读 · 0 评论 -
ConstraintLayout详解
声明:本篇博客是基于Google官方文档ConstraintLayout,按照我的理解总结而来。(如果有条件、英文还不错的,Google官方推出的控件可以直接看官方API,都有比较详细的介绍)ConstraintLayout 约束布局是在16年Google I/O大会上提出的新的布局方式。相较于之前的布局,使用ConstraintLayout可以极大的减少View嵌套层级,优化系统渲染性能。同时...原创 2018-12-25 14:18:45 · 1009 阅读 · 0 评论 -
Android MVP设计模式总结
MVP设计模式从提出至今也有不短的时间了,大家应该或多或少使用过MVP模式开发项目,或者至少听说过MVP设计模式,不同的人对其有不同的理解,今天就来说说我所理解的MVP设计模式。MVC说起MVP就不得不提MVC设计模式,MVP模式是从MVC模式中演化出来的。MVC包含以下三种组件:控制器(Controller)- 负责转发请求,对请求进行处理。视图(View) - 界面设计人员进行图形...原创 2019-02-14 11:36:48 · 292 阅读 · 0 评论 -
Android注入框架——ButterKine
OverViewButterKine是一款开源的Android视图的字段和方法绑定快速注解框架,应用十分广泛。可以避免重复使用findViewById,很大程度上简化代码,提高开发效率。Android Studio配置在build.gradle中添加配置,文章是基于8.8.1版本进行配置与说明的,不同版本之间使用方法稍有差异,具体情况可查看GitHub_ButterKine项目提交记录与说明...原创 2019-03-05 15:43:04 · 549 阅读 · 0 评论 -
Android第三方log库——Logger
Log在Android日常开发中的重要性不言而喻,出现bug后的第一件事基本都是先看log。但是在使用Android原生Log类时,通常需要先定义一个静态TAG,然后Log.d(TAG,"message");,为了解决在项目上线时去掉log的需求,我们通常会再封装一个LogUtil类来实现这个功能,未免有些繁琐。既然有现成的轮子可以更高效、更简洁、更美观的解决log的问题,那我们何乐而不为呢。O...原创 2019-03-12 16:39:36 · 1434 阅读 · 0 评论 -
Android注解库——support-annotations
正式开始介绍之前,我们先来了解下注解是到底是什么?注解注解是一种可以添加到java代码中。类、方法、变量、参数、包都可以被注解,注解对被注解的代码没有直接影响。注解之所以起作用是因为在代码编译时会根据相应的注解做对应的处理。定义注解注解使用关键字@interface进行定义的。@Documented@Retention(RetentionPolicy.CLASS)@Target({...原创 2019-03-13 18:44:07 · 789 阅读 · 0 评论 -
Android动画篇——View Animation(视图动画)
对于Android开发人员从初级向高级的进阶过程中,动画无疑是必不可少的一块知识点。在合适的场景合理的使用动画效果,可以极大的提高app的系统体验流畅度,是优化交互和提高用户体验的一个重要的方面。你可能很早就接触过Android动画,甚至能说出动画分为:View Animation、Drawable Animation和Property Animation等类型,但是你未必能详细说出每种动画的适...原创 2019-04-02 19:38:02 · 981 阅读 · 0 评论 -
Android动画篇——Drawable Animation(帧动画)
OverViewAn object used to create frame-by-frame animations, defined by a series of Drawable objects, which can be used as a View object’s background.定义多帧画面连续播放构成了帧动画。帧动画的应用场景不多,主要用在过于复杂而无法用代码实现的gi...原创 2019-04-02 19:39:12 · 646 阅读 · 0 评论 -
Android动画篇——Property Animation(属性动画)
OverViewThe property animation system is a robust framework that allows you to animate almost anything. You can define an animation to change any object property over time, regardless of whether it ...原创 2019-07-02 17:27:06 · 515 阅读 · 0 评论 -
Android中常用的加密算法——MD5加密
转载请注明出处:https://blog.csdn.net/Rookie_xue_IT/article/details/81341637数据加密的基本过程就是对原来为明文的文件或数据按某种加密算法进行处理,使其成为一段不可读的代码,通常称为“密文”,通过这种途径来达到保护原始数据的目的。通过解密方法或秘钥,经过解密过程,可以将密文还原成可读的原文。MD5加密md5加密是我们常用的一种加...原创 2018-08-02 14:05:25 · 9858 阅读 · 0 评论