android 备忘录3

1.逻辑右移与算术右移

比如一个有符号位的8位二进制数11001101,逻辑右移就不管符号位,如果移一位就变成01100110。算术右移要管符号位,右移一位变成10100110。

逻辑左移=算数左移,右边统一添0

逻辑右移,左边统一添0

算数右移,左边添加的数和符号有关

e.g:1010101010,其中[]位是添加的数字

逻辑左移一位:010101010[0]

算数左移一位:010101010[0]

逻辑右移一位:[0]101010101

算数右移一位:[1]101010101

>>右移运算符,有符号。右边超出截掉,左边补上符号位 
>>>右移运算符,无符号,左边补0 
算术右移 顾名思义 算术嘛 当然要带符号了 所以要补上符号位 负的就填1正的就填0 
那个逻辑右移 直接补上0就ok

2. HEX_DIGITS[b >>> 4 & 0xf] + HEX_DIGITS[b & 0xf];详解

        /**
         * 十六进制数字
        * */
        private static final String[] HEX_DIGITS = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9","a", "b", "c", "d", "e", "f" };
          HEX_DIGITS[b >>> 4 & 0xf]取字节中高 4 位的数字转换,>>> 为逻辑右移(即无符号右移),将符号位一起右移
          HEX_DIGITS[b & 0xf] 取字节中低4位的数字转换
          0xf ->1111(前面的0x目的是标注这个数为十六进制。F由16进制转换为2进制为1111)
          如果为0xff -> 1111 1111
          HEX_DIGITS[b >>> 4 & 0xf] + HEX_DIGITS[b & 0xf];//1110 & 1000 ->1000(只有对应位上都为1的时候与为1)
3.toLowerCase()方法返回一个字符串,该字符串中的字母被转换为小写字母
4.android 中的Ellipsize
 在xml中
android:ellipsize = "end"    省略号在结尾 
android:ellipsize = "start"   省略号在开头 
android:ellipsize = "middle"     省略号在中间 
android:ellipsize = "marquee"  跑马灯 
最好加一个约束android:singleline = "true" 

也可以用代码语句 

tv.setEllipsize(TextUtils.TruncateAt.valueOf("END")); 
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START")); 
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE")); 
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
5. 屏幕锁         
 //声明键盘管理器并获取键盘的服务
 KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
 //声明键盘锁并初始化键盘锁用于锁定或解开键盘锁 
 KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
 keyguardLock.disableKeyguard();//解锁屏幕 需要权限android.permission.DISABLE_KEYGUARD
 keyguardLock. reenableKeyguard();//给屏幕上锁

6.静态方法好处:不用实例化当前这个类对象,可以直接调用这个类对象中的方法。例:Integer.parser("123456");这个调用的就是静态方法。

7.data.split("==");
用“=”来分割字符串,返回一个string类型的数组,将没次分割出来的字符串放在数组中。

8.PendingIntent的Flags
   
PendingIntent的Flags为0代表该PendingIntent不带数据;
    Flags为PendingIntent.FLAG_CANCEL_CURRENT,则只有最后一次PendingIntent有效,之前的都无效了。
    Flags为PendingIntent.FLAG_UPDATE_CURRENT,如果上面的num为常量, 则所有对应的Intent里面的extra被更新为最新的, 就是全部为最后一次的。 相反,如果num每次不一样,则里面的Inent的数据没被更新。所以要通过extra数据来区分intent,应采用PendingIntent.FLAG_UPDATE_CURRENT),且每次num不一样

9.
为每段代码添加一个异常捕获的代码,可以确保一个出问题,其他的可以顺利运行。

10.

  Hashtable.keySet()          降序

  TreeMap.keySet()            升序

  HashMap.keySet()            乱序

  LinkedHashMap.keySet()      原序


11.
listview.setselection(0);滚动到选中行

12.
在使用android中的draw9patch的时候,不仅需要画横的,也要画竖的,避免在使用图片的时候会出现在图片的旁边出现画的黑色的边框。

13.sqlite介绍的很好的一个文章http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlite/

14.
有好多值得学习的内容的一个博客http://blog.163.com/vicent_zxb/blog/#m=0

15.
在AndroidManifest.xml中设置了android:icon="@drawable/main_icon"之后,会将这个图片和lable中的内容显示在title上。

16.android/res/values-sw600dp

是为了屏幕分辨率自适应。android设备很多,尺寸密度分辨率都不同,为了自适应屏幕大小,res目录下提供了多种资源文件,根据所要适配的设置的分辨率,在对应的资源文件下进行设置。

17.values-1024x768 中的dimens.xml文件中写入(1024*768基本上指的就是平板)
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <dimen name="main_tab_h">80dp</dimen> 设置图片时用dp
    <dimen name="main_tab_tsize">22sp</dimen> 设置字体大小时用sp
    
    <dimen name="set_userinfo_prow">100dp</dimen>
    <dimen name="set_cpwd_prow">100dp</dimen>
</resources>
备注:在xml中调用时直接android:layout_height="@dimen/main_tab_h"调用为其设置大小
             在activity中设置时用context.getResource().getDimensource(r.dimen.main_tab_h);即可为其动态设置大小。

18.values中的内容是指通常情况下这么适配或调用。当符合更细一层的条件时,会选择更详细的一层values-1024*768适配。

19.
sqlserver是一个数据管理系统。

20.关于android 的webservice的一个很好的可以运行的例子。http://www.cnblogs.com/android100/archive/2013/11/20/Android-ksoap2-android.html

19.
int[] location = new int[2]
imgBtn.getLocationOnScreen(location); 
//location [0]代表x坐标,location [1] 代表Y 坐标。//获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值