knowledge-in-ybook
在有书里面遇到的知识点.
android studio 几个键位映射:
- 1.ctrl + shift + F7 :高亮当前文件下选择字符所有的出现之处,esc可以取消高亮
- 2.alt + 上或下键 在内部和方法间跳转,当你处于一个方法上时,此快捷键(向上)可以让你跳至方法名处。
- 3.ctrl + f12 可以帮助你展示当前类文件的方法结构,查找你需要的方法。
- 4.ctrl + alt + h:帮助你展示方法如何被调用。
- 5.ctrl + shift + i :立马知道某个类或是方法的来源时同时又不想丢掉当前的编码环境
- 6:f11可以在逆的当前光标所在行打上标签。带数字或是字母的标签则是ctrl+f11.
- 7.ctrl + y :删除当前行。
友盟支持fragment的控件,MobclickAgent对页面的访问统计:
- 在页面的开始方法onResume()里添加MobclickAgent.onPageStart(String pageName),在结束的方法里
- 调用MobclickAgent.onPageEnd(String pageName) 若是activity则参数是(this).(统计页面的次数,在后期
- 利用友盟的自定义事件去统计数据的细化度。)
android 依赖注入库:Dagger RoboGuice Butterknife
- butterknife 里面常用的用来减少代码的方法:
- @nullable 表示定义的字段可以为空。
- @Override 重写父类的方法。
- @OnClick 对view 设置监听。
- @InjectView 实例化view对象。
学习了一些使用vim的编辑文档方法,基本的命令是:
- vi filename 打开或新建文本
- vi + filename 打开文件并且光标在最后一行。
- 按 0 光标到本行句尾,shift 4 光标至本行首。
- 输入 i 时,进入插入模式,即可插入编辑文本,按 Esc 回到编辑状态。
- :w filename 保存文件为:filename
- :q 退出 vim ,:q! 不保存文件并退出。
- vim filename :打开刚才在vim里面保存的文件。
- :w 保存文件。
- :x 保存当前文件并退出。
- 输入 vimtutor 学习基本的命令。
- 要多用多熟悉。
StringBuilder的技巧和String 的不同:
- 还有StringBuffer,这三者的使用的场合,及各自的用法
- waiting for writing …
Volley简介:
Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,
既可以像AsyncHttpClient一样非常简单地进行HTTP通信,
也可以像Universal-Image-Loader一样轻松加载网络上的图片。
StringRequest和JsonRequest:
- 网络访问的请求:
- 创建一个RequestQueue对象—>创建一个Request对象—->将Request对象添加到RequestQueue对象。
RequestQueue mQueue = Volley.newRequestQueue(context);
StringRequest stringRequest = new StringRequest("http://www.baidu.com", ...);
mQueue.add(stringRequest);
* 加载网络图片:ImageRequest
ImageRequest imageRequest = new ImageRequest(
"http://developer.android.com/image/home/aw_dac.png" ,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imageView.setImageResource(R.drawable.default_image);
}
});
接收了6个参数
第一个参数是图片地址,
第二个是图片请求成功的回调,这里把返回的Bitmap参数设置到ImageView中
第三四个参数分别用于指定允许图片的最大宽度和高度,如果图片大于这个值
则会进行压缩,指定为0的话表示不管图片多大,都不会进行压缩
第五个参数指定图片颜色的属性Bitmap.Config下的几个常量都可以在这里使用
其中ARGB_8888可以展示最好的颜色属性,每个图片像素占据4个字节的大小
而RGB_565则表示每个图片像素占据2个字节大小
第六个参数是图片请求失败的回调,这里我们当请求失败时在ImageView中显示一张默认图片
最后:将这个ImageRequest对象添加到RequestQueue里,mQueue.add(imageRequest);
ConcurrentHashMap :
它与HashMap相比有更多的优点,线程安全,在多个线程时,
使用HashTable锁住了整个hash表,造成了很大的的浪费,
而concurrenthashmap则是把hash表分为16个桶(segment),
一些get、put、remove等常用的操作只锁住当前用到的桶
原来只能一个线程进入,而现在却能同时16个(默认值)线程写入,并发性的提升很大- 它里面有:三个实体类,ConcurrentHashMap(整个Hash表),Segment(桶),HashEntry(节点)
- 还有些未懂的,需要去写代码看好处。
listView的一些小知识:
[滑动背景,item间隙] (http://www.imooc.com/wenda/detail/243880
在拖动时,背景图片消失变成黑色背景
只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,
如果时加载图片,把它设置为透明(#00000000)
android:scrollingCache=”false”listview的上面和下边有黑色的阴影
android:fadingEdge=”none”
listview的每一项之间需要设置一个图片作为间隔
abdroid:divider=”@drawable/list_driver” list_driver是一个图片资源
分割线
属性 android:divider=”#ff0000” 定义分隔符为红色
可以自己设置高度 android:dividerHeight=”6dp”
设为无间隙,则android:divider=”#00000000”,或是在java里面,listView.setDividerHeight(0);
android 性能优化
性能渲染
系统每16ms左右重绘activity。这意味着你需要在16ms的时间里运行完所有的逻辑并更新到屏幕上,
如果没有达到要求,用户体验会很糟糕,原因是因为花大量时间去绘制大量的视图层次(View hierarchy)
也可能是绘制了大量的对象
解决:利用Hierarchy Viewer 来判断activity是否过于复杂,
减少失效(invalidation)和布局(layout)的数量
监听自己是否被卸载
*
waiting
- chenzhao@hustunique.com