在公司实习一个月学到了什么

前言

不知不觉,实习已经要一个月了,在这一个月里,还是积累了不少的知识和经验,也注意到了以前没有注意到的地方。

资源文件还可以这样搞?

实际开发当中,一个项目是由许多模块组成的,当项目非常巨大的时候,我们的资源文件乱成一坨了。那么多文件,很容易搞混的,尤其是对于我这种起名很随意,英语很差劲的童鞋。入职第一天,看了原来项目代码,同事就告诉我个逼格极高的技巧。如下:在gradle中android下添加

sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
            res.srcDirs = ['src/main/res','src/main/java/gl/com/a/res']
        }
    }

这是用来指明我们的manifest文件以及资源文件的位置的。默认的资源文件只有src/main/res,剩下那个是某模块的资源文件,对应如下。

不多说,爽吧。

TextView的特殊性

当我们将TextView的大小设置为wrap_content的时候,问题来了,padding设置为0,并不能使我们控件的高度正好等于字的高度,原因是TextView会加一个随字体大小变化而变化的东西,解决办法

android:includeFontPadding="false"

TextView预先留出来的空白是为了上标和下标。

ScrollView嵌套ListView或GridView显示不全

有时候我们需要使用这样的嵌套,,但是我们会发现数据显示不全,是以为这2个东西都是可以滑动的。(PS:请高手从源码角度告诉我真正的原因)
一般来说我们通过以下2个方法来解决。

  1. 自己实现LIstView(推荐)
    我们只需要重写onMeasure方法
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
  1. 通过代码动态计算高度设置params
View listItem = listAdapter.getView(i, null, listView); 
listItem.measure(0, 0); //计算子项View 的宽高 
totalHeight += listItem.getMeasuredHeight(); //统计所有子项的总高度 
}  

ViewGroup.LayoutParams params = listView.getLayoutParams(); 
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
//listView.getDividerHeight()获取子项间分隔符占用的高度  
//params.height最后得到整个ListView完整显示需要的高度  
listView.setLayoutParams(params); 
  1. 其他方法就不说了
    还有带滑动的嵌套都具有这样的问题,如listview嵌套listview等等。

EventBus要注意的问题

一般来说,通过EventBus来post一个Message对象,这是要注意了,我们需要将Message.what 的值写在一个专门来存放的类里面,要保证唯一,防止我们post的对象被多个观察者接收到并做出对应的逻辑处理。

你可能感兴趣的:(android)