Android
文章平均质量分 72
0萌萌哒0
这个作者很懒,什么都没留下…
展开
-
LiveData与SnackBar、Navigation和其他事件(SingleLiveEvent案例)
视图(Activity 或者 Fragment)使用可观察的 可以很方便地与 ViewModel 通信。视图订阅 Livedata 数据的变化并对其变化做出反应。这适用于一直在屏幕上展示的数据。但是,有一些数据只需要消费一次,像 Snackbar 消息,导航事件或者对话框触发器。......原创 2022-07-09 15:26:19 · 809 阅读 · 0 评论 -
ViewModel 与 LiveData - 模式与反模式
理想情况下,ViewModels 不应该知道 Android 平台的任何信息。这可以提高 ViewModel 的可测试性、泄漏安全性和模块性。一般的经验法则是,确保在你的ViewModel 中没有导入 包(除了 )。Presenter 也应是如此。条件语句、循环和一般决策应该由 ViewModel 或者 app 的其他层而非 Activity 或 Framework 负责完成。 视图通常没有单元测试,所以里面的代码越少越好。.........原创 2022-07-07 23:34:20 · 649 阅读 · 0 评论 -
Android 触摸系统 - 第一部分:触摸函数和 View 层次结构
如果对Android视图如何触摸事件没有深刻的理解,你会对许多触摸行为感到迷惑:为什么点击了按钮没有生效?为什么 没有滚动?为什么我需要处理嵌套的 ?本文将介绍触摸事件如何在 view 层次结构中流动,核心函数如何影响事件流。......原创 2022-07-03 20:11:40 · 615 阅读 · 1 评论 -
Kotlin的对象表达式(Object expressions)
本文介绍关于对象表达式的一些概念和用法原创 2022-07-01 23:44:56 · 447 阅读 · 0 评论 -
Kotlin中的集合函数
本文会介绍一些 Kotlin 集合函数,这些函数可以极大地提高我们的开发效率,可以作为小抄随时翻阅~原创 2022-07-01 23:12:52 · 2272 阅读 · 0 评论 -
Kotlin 协程异步编程
本文将展示如何轻松高效地使用Kotlin协程写出异步代码。原创 2022-06-29 22:23:34 · 791 阅读 · 0 评论 -
Kotlin 伴生对象(companion object) VS 全局函数
Kotlin的伴生对象(companion object)在语法上类似于Java中的静态方法,所以很多人也都是这样用的。本文将向你展示伴生对象的工作方式和在Kotlin中创建静态方法的推荐做法。原创 2022-06-28 23:33:38 · 1458 阅读 · 0 评论 -
Android 实现连续多次点击
定义一个通用的抽象类:public abstract class MultiClickListener : View.OnClickListener { private var count = 5 // 默认连续点击5次 private var hits: LongArray = LongArray(count) //记录点击次数 private var duration: Long = 2000L // 默认有效时间 constructo原创 2021-05-19 10:08:39 · 2171 阅读 · 0 评论 -
Android 自带对象池Pools工具类简介
Android 包 androidx.core.util 下有个工具类 Pools,为开发者提供了两种对象池,没有同步控制的SimplePool 和 有同步控制(访问加锁)的SynchronizedPool(继承自SimplePool),方便开发者根据需要创建对应类型的对象池Pools类的源码也非常简单,一看就懂public final class Pools { /** * 对象池接口 */ public interface Pool<T> {原创 2021-03-01 23:39:18 · 1017 阅读 · 0 评论 -
Android ColorStateList 设置同时处于两个状态的颜色不生效
ColorStateList 允许我们根据View的不同状态为View设置不同的颜色,比如TextView在按压态、选中态、禁用态等状态的背景颜色。创建方式有两种:XML静态定义和java代码动态创建XML 静态定义和使用创建color类型的xml资源文件,然后在布局的xml文件中引用该颜色资源文件即可<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com原创 2021-02-03 18:39:46 · 801 阅读 · 0 评论 -
Android 属性动画原理解析
目录属性动画简介什么是属性动画属性动画的基本模型android 属性动画使用示例ValueAnimatorObjectAnimatorViewPropertyAnimator属性动画的执行流程动画循环代码实现帧刷新机制Android Display系统的工作方式早期帧刷新机制优化:Project Butter代码实现根据动画已播放时长计算属性值线性动画示例非线性动画示例时间插值器类型估值器代码实现设置属性值代码实现原创 2021-01-17 00:45:52 · 2539 阅读 · 2 评论 -
Android materialDesign 风格阴影 改变阴影颜色
我们知道,在 Android 5.0 以后,可以通过 xml 或 Java代码 的方式给 View 添加阴影// 方式一:xml 设置android:elevation="10dp"// 或android:translationZ="10dp"// 方式二:java 代码设置view.setElevation(20);// 或view.setTranslationZ(20);...原创 2020-05-01 15:16:24 · 7543 阅读 · 3 评论 -
Android仿照薄荷appBMI控件实现
Android仿照薄荷appBMI控件实现BMI原图和实现的效果图BMI控件的实现在XML中自定义属性在java代码中自定义view使用自定义控件添加背景和虚线分割线结语BMI原图和实现的效果图BMI页面:实现效果图: BMI控件的实现BMI控件主要由标题、三段线、当前数值和指示图标、数值刻度和中间的文字组成。这个控件我们可以通过自定义控件实现。在XML中自定义属性在styles....原创 2018-11-08 17:39:27 · 1265 阅读 · 0 评论 -
Android 获取屏幕宽度、高度、dpi等信息
在Android中,关于屏幕的宽度、高度等的信息都封装在DisplayMetrics 类中,获取 DisplayMetrics 的方法以下几种:不需要用到 context 的:第一种:DisplayMetrics metrics = new DisplayMetrics();WindowManager manager = (WindowManager) context.getSys...原创 2018-10-16 16:34:56 · 5276 阅读 · 3 评论 -
Android 用state list drawable动态改变按钮点击前后的状态
有时候我们希望按钮在点击时和未点击时显示不同的背景和(或)文字样式,这时我们可以使用state list drawable自定义drawable。首先我们创建按钮点击状态下应显示的shape(res/drawable/button_shape_pressed.xml):<shape xmlns:android="http://schemas.android.com/apk/res原创 2016-01-06 20:43:36 · 1239 阅读 · 0 评论 -
Android按照拼音排序获取联系人并根据拼音首字母获取联系人
在写安卓程序的时候,需要获取联系人的信息,需求是根据联系人姓名拼音的首字母查询联系人的信息,也就是说给定一个字母,要查出所有的拼音以该字母开头的联系人。在网上看了好多博客,都建议说使用SORT_KEY_PRIMARY字段,看了下Android源码,该字段返回的的确是拼音拼写,然而我用的时候,它返回的还是联系人的名称,没有拼音!说明一下,我用的是Android6.0系统。我百思不得其解,为什么呢?再原创 2016-04-21 20:12:25 · 4363 阅读 · 0 评论 -
设置ListView item 不可点击,item中的元素可以点击
一般来说,如果item中存在ImageButton、Button、CheckBox 等子控件(Button或Checkble的子类控件),这些控件会自动获取焦点,然而如果item中没有这类控件时又该如何设置呢?其他的控件如Image、LinearLayout(还有其他的各种layout)、TextView等都不会自动获取焦点,那我们就在需要点击的元素的布局中加上android:focusable=原创 2016-03-25 10:28:38 · 3258 阅读 · 0 评论