Android开发要点

1、自定义View如果作为ListView Item不要对View单独设置setClickable、setFocusable,如果设置后ListView的Selector会失效。

2、ListView Item中CardView如果设置cardElevation值,Item选中的ripple效果会被置为底部,造成UI效果不理想,在ListView中添加android:drawSelectorOnTop="true"将背景前置到顶部可以解决。

3、Android WebView如果HTML内容内嵌iframe此时通过shouldOverrideLoadingUrl方法不能捕获到iframe内部跳转的URL,此时需要调用shouldInterceptRequest()来捕获,这个方法不仅仅会捕获<a href=""></a>的URL跳转,对HTML内容的HTTP资源请求也会捕获,比如css、js等。

4、微信分享时出现“分享受限,由于hit push hold!!无法分享到微信”,原因是分享用的微信账号在其他手机登录,但是本机还没有退出登录,导致没有权限分享,重新进入微信并登录就OK。

5、公私密钥对转keystore,公私密钥对:platform.x509.pem+platform.pk8

  • 把pkcs8格式的私钥转换为pkcs12格式:

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

  • 生成pkcs12格式的密钥文件:

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name loginDebug

  • 生成keystore:

keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias loginDebug

6、提取APK签名密钥信息

签名时生成的RSA文件会保存在APK包中的META-INF文件夹中,名为CERT.RSA.

通过keytool读取,

keytool -printcert -file CERT.RSA

可以打印MD5、SHA1、SHA256相关信息。

7、Android Canvas RecF的定义

使用drawArc画一段圆弧时,RecF确定的是圆弧所在圆的边界范围left、top、right、bottom。

8、Android Source Download Proxy Setting

https://github.com/luciusluan/notes/wiki/repo%E4%BD%BF%E7%94%A8socket5%E4%BB%A3%E7%90%86

9、Memcached在Mac OS X下安装make报错:

修改MakeFile中CFLAGS的定义,将-Werror去掉。

因为Makefile有-Werror出现警告时不通过编译。-Werror的意思是警告即错误,即编译过程中有警告产生就无法编译通过。

10、HttpUrlconnection错误处理

HTTP status code=200时,通过getInputStream获取服务器的返回数据。

如果服务器的statuscode为非200时,getInputStream()会抛出java.io.FileNotFoundException异常,  这时无法获取到错误的相关信息,其实Http connection也是按照Linux 输入输出的那一套规则,id=0的文件描述符代表标准输入,id=1代表标准输出,id=2 代表标准错误,HTTP status code=200为正确输出,其他则为错误,需要通过getErrorStream()读取。

11、Android Animation

ViewAnimation 视图动画

FrameAnimation Drawable动画

ObjectAnimation 属性动画

ViewPropertyAnimator API>12 View类添加的一个简易动画配置方法

LayoutAnimator API>11 针对ViewGroup,在ViewGroup的子View添加删除隐藏更改时Layout的动画效果。通过LayoutTransition实现。

template_new_project