在Android开发过程中,不同的项目之间总会复用到一些有用的代码,这里记录下来,方便以后使用。
一、Android判断点击区域是否在指定的View之内
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { Rect rect = new Rect(); View.getGlobalVisibleRect(rect); if (rect.contains((int)ev.getRawX(), (int)ev.getRawY())) { return false; } return super.onInterceptTouchEvent(ev); }
二、ListView点击没有反应的问题(一般是自己定义的item中存在ImageButton, Button, CheckBox等自控件)
原因一般是自己定义的item中含有Button或者Checkable的子控件,获取了焦点,点击item时,只有这些子控件响应,item本身没有响应。
解决的办法是在item.xml的layout中加入属性
android:descendantFocusability="blocksDescendants"
三、旋转屏幕时禁止Activity重启
android3.2以前,我们习惯在AndroidManifest.xml 中添加activity属性android:configChanges="orientation|keyboardHidden" , 但是在android 3.2以后的版本需要增加“Screen Size”,即android:configChanges="orientation|keyboardHidden|screenSize",才可以禁止Activity重启。
SDK描述如下,在“Handling the Configuration Change Yourself”段落中。
http://developer.android.com/guide/topics/resources/runtime-changes.html
四、获取AndroidManifest.xml中配置的应用版本号
public String getVersion() { try { PackageManager manager = this.getPackageManager(); PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0); String version = getString(R.string.version) + info.versionName; return version; } catch (Exception e) { e.printStackTrace(); return "1.0"; } }