YBook

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