android里View设置Gravity的深度解析之位运算

在阅读别人的源码时,有时发现,在代码中view.setGravity中,参数可以是Gravity.Left+Gravity,Top,看上去确实没毛病,但仔细想想,为什么可以这么定义呢?看了源码查了资料,现在就可以得出结论了:
1.此处采取位运算的形式,将值转化为二进制,通过计算机原理,1为true,0为false.不懂搜索百度:位运算,补补基础
2.android文档参考方便研究:http://www.android-doc.com/reference/android/view/Gravity.html#RIGHT
相反值的定义:Gravity.Top和Gravity.Bottom,Gravity.Left和Gravity.Right等等,top=48,bottom=80,二进制为top='11'0000
bottom='101'0000,从右到左看,top取两位11,bottom取三位101,右到左,最右的一位都是1,则表示上下的标记位为1(true),而top的第二位为1,则表示设置为top为true,如果是0的话则不设置(false),而bottom的第三位为1为true,设置为bottom标记,同理,left和right都是一样,大家可以试试.
3.组合的原理:example:Gravity.Left+Gravity,Top,left=3,top=48,二进制和为110011,右往左前两位表示left,中间两位表示其他标记,最后两位表示top看到这里,应该有些线索发现了吧?
4.总结:android仅仅通过一个二进制数就可以获取多个Gravity组合,其原因在于不同位数代表不同标记位,可以利用一个二进制数同时对多个标记位进行判断,第2或3位是作为一个左右标记位,第4或5位作为另一标记位,以此类推,在这里android源码太复杂,这样简单论述比较好理解.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值