更多问答 >>
-
2019-08-18 21:42
-
每日一问 今天聊一下Gradle 相关,BuildConfig这个类是如何生成的?
2019-08-20 23:27 -
每日一问 Parcelable 为什么效率高于 Serializable ?
2019-08-26 00:02 -
2019-09-01 23:16
-
2019-09-04 23:33
-
2019-08-12 09:58
-
每日一问 事件分发机制大家应该都熟记于心,默认事件分发是逆序的,有哪些方法可以修改分发顺序?
2019-08-11 21:18 -
每日一问 匿名内部类访问的外部类局部变量为什么要用final 修饰,jdk8为啥不需要了? 2/3
2019-08-08 23:51 -
每日一问 AppCompatTextView 与 TextView 1/3
2019-08-07 01:29 -
每日一问 大家应该都有泛型在编译期会被擦除的概念,那么为什么我们在运行时还能读取到呢? 3/3
2019-08-04 19:44
很多地方,比如Activity中的getWindow().setFlags()用来设置各个窗口属性,还有平常在xml中用的Gravity属性,还有View里面的mViewFlags等等。
就拿View来说,我们平常所设置的Enable, Clickable, Focusable, Visibility等这些状态,都是保存在mViewFlags里的。在源码中可以看到一些常见的操作(在这里假设Flags为保存状态的变量,MASK为标识):我们在日常开发中,如果一个类里需要保存多个不同的状态的话,可以借鉴下这种位运算方式。当然了,为了增加代码的可读性,还可以把这些运算封装成方法,并写上注释。
自定义View的measureSpec;
Java的Map系列的hash方法;ReentrantReadWriteLock用高16位保存共享锁的state,低16位保存排他锁的state。说的非常普遍的例子, 在遇到recyclerview与CheckBox嵌套的时候,需要保存CheckBox的状态, 我们刚开始普遍的做法是使用一个hashmap存一个唯一值.
但,其实我们还有一种做法,就是使用位运算来进行储存状态,打个非常简单的比方您好,这样的话,您的意思是一个bit位对应一个item么?那岂不是只能记录32个item?望赐教
什么样数据,采用什么样的数据类型,上面只是打个一个小比方.事实上,使用可下拉列表的选中状态,并不推荐使用,只是提供一种思路,比如Android源码中经常对View保存多个状态操作,这样的比较贴合实际. ...查看更多
什么样数据,采用什么样的数据类型,上面只是打个一个小比方.事实上,使用可下拉列表的选中状态,并不推荐使用,只是提供一种思路,比如Android源码中经常对View保存多个状态操作,这样的比较贴合实际.
flag,如果不用位运算符,属性会多很多个。。。
还有对1,3,7等数的取余也可以用位运算,HashMap的hash值就是这样的,用hashCode和node长度-1,也就是1,3,7这样的数字取并来取余,以次来当做hash值RecyclerView内的ViewHolder的各种状态
最佳应用就是状态管理了吧!
事件分发机制里的 状态位
intent 的 addFlag