1、layout_weight
使用线性布局的layout_weight=1时候内部控件宽度设置为0dp,因为weight权重分的是剩余空间(高度或者宽度)
还比如:当设置height=0dp layout_weight=1时候,该控件会填满剩余空间。
2、gravity 、layout_gravity
gravity = center 和 layout_gravity = center 的区别是:第一个代表所包含子view居中显示,第二个是它在它的父view中居中显示。
3、eclipse快捷键
ctrl+H 搜索该字段在整个程序中出现的位置 F4看类继承关系 对于接口Ctrl+ openImplementation 可以查看该接口的实现类
4、Ant build
可以直接对build.xml文件右键run as Ant Build,
如果失败打开ant视图,Add buildfiles,将带有build.xml的文件添加到ant视图中,打开default build part 右键 run as Ant Build.
6、Fragment的使用
两种方式:
一、support.v4,继承fragmentActivity ,getSupportFragmentManager。
二、app.fragment,继承activity,getFragmentManager
如果fragment导入的是v4包里面的,那么所有fragmentManager也要导入v4包里面的
7、事件分发
dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。
返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。
onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。
onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,
返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。
返回false则不拦截,继续往下传。
这是ViewGroup特有的方法,因为ViewGroup中可能还有子View,而在Android中View中是不能再包含子View。
8、代码优化
1、TextView尽量宽度不要写wrap_content,尤其是在listView的item中!因为如果每项item的text长度不一,每次都要去计算宽度,很耗性能!listVIew会非常卡顿!
2、排除法解bug
例如:listview卡顿,首先把所有可能出现问题的语句都注释掉,看看最终执行的是哪句话出现的卡顿现象,然后再分析这句话有什么问题!
9、解决eclipse的 Invalid project description. overlaps the location of another project: 问题
原因:
下载工程时把该工程放在了workspace目录下。eclipse插件在创建项目的时候需要在workspace目录下创建一个同名的目录。
但发现workspace目录下已存在对应的目录时,就会报上面的处错误信息了。
解决方法:
把工程从workspace中移出来(剪切不是复制)就可以了,重新导入就可以了,同时copy 一份到workSpace中。
10、popUpWindow获取焦点并且点击外部消失
mPopupWindow = new PopupWindow(gridView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.setOutsideTouchable(true);
true代表获取焦点,outSideTouchable点击外部window消失,一定要设置backgroundDrawable
11、LRU
Volley 在缓存方面,主要是使用了 LRU(Least Recently Used)算法,LRU 算法是最近最少使用算法,它的核心思想是当缓存满时,优先淘汰那些近期最少使用的缓存对象。主要的算法原理是把最近使用的对象用强引用的方式(即我们平常使用的对象引用方式)存储在 LinkedHashMap 中,当缓存满时,把最近最少使用的对象从内存中移除。
12、main方法参数
public static void main(String[] args){}
传递的参数String[] args是通过命令行参数传递进去的,也就是通过命令行输入哪些参数,会保存在String[] args数组里面。
13、转义字符 \
用法:""双引号内如果想打印双引号,system.out.println("i am \" super star \" ");