天天看点

名厨android2.0项目总结

 1.事件处理    轮播: 事件的分发 ,事件的拦截,事件的处理

    2.listview混排注意事项  

     getViewTypeCount()

getItemViewType      

3.高度测量 listview嵌套listview   listview嵌套grideView scrolView嵌套listview 评论string过长后显示不全的问题 首先要给Texview 添加几个属性

android:ellipsize="none"
android:lineSpacingExtra="4dp"
android:maxLines="100"
android:scrollHorizontally="false"      

然后发现添加完这几个属性后并没有什么反应,那它不折行那问题肯定是string的长度挤到了外面那就给textViewx限制下宽度好像不太合理所以就给textView 外面套一个linnerlayout 设置它的width 为一个固定值这样知道textView长度够的时候它才会限制,所以对textView的影响没有

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }
    int totalHeight = 0;
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}      

listview 嵌套grideview  需要自定义Grideview 来禁止内滑动,主要的是重写on measure方法,进行测量

public class NoScrollGridView extends GridView {
    public NoScrollGridView(Context context) {
        super(context);

    }

    public NoScrollGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NoScrollGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}      

4.android 6.0适配问题

5.友盟分享的各种坑 文档上说快速集成只需10分钟,其实他妹的扯犊子 1).首先就是Ui 不合适特别是自定义的按钮的图片大小累蒙圈我们的设计师了   问题: 自定义按钮的图片默认被友盟拉大和其他icon 区别出来是自定按钮   解决方案:请求设计师做一套留有空白边的icon 这样就解决方案了,图片的大小我已经留了下来,避免下回重复此工作

2).qq控件分享不成功

 问题:分享链接错误 因为我们的应用还没有上线,所以分享的链接是本地搭建的服务器地址,比如:"http://192.168.1.132:8001/app“ 解决方案:分享链接最好用带域名的链接,不要使用带ip地址的链接

3).集成错误的 qq appId

  问题:清单文件的qq activity de scheme id 问题   解决方案:id 前面需要加上tencent 

<data android:scheme="tencent100519554" />      

4).微信分享文案的问题

   问题:明明给温馨设置了分享内容可是文案莫名的消失了

   解决方案:微信的分享文案和其他的分享平台不一样不是放在text 里面而是放在了title 里面所以要把分享文案放在titile 里面

5)。新浪继承问题

  问题: 找不到集成新浪的so 文件

  解决方案: 把所有so文件放在libs 目录 并且要在gradle 里面指定下so 文件所在的位置,在按android 下加入

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}      

6).各个平台的title 问题 效果不一样

  • qq空间和微信不设置标题,标题就默认显示内容了.就是说内容重复显示了2次
  • 微信朋友圈如果设置了标题,那么内容就不显示了
  • 新浪微博没这个功能

    总结: 最好给每个平台都设置titile 这样就不会出现分享失败的原因,并且微信的title text 要特使对待, 并且分享的链接,图片,要注意大小

7).分享的相关代码最好写在一个公共的累里面,这样方便奇台切面的调用,也减少了代码的冗余

6.推送的集成问题     这里只能说 grade 里面的applicationId 一定要是自己的包名一定要正确正确!!!!!

7.适配问题:

  1).写布局文件的时候一定要把每个view的background设置下,不然在每个手机跑出来的界面你永远都不知道是个什么德行

 2).基于android 6.0动态获取权限

 3).华为荣耀底下的黑条布局适配问题

 4).按钮无响应的问题,原来如果两个布局叠放在在一起默认的如果不特殊处理,每个手机点击效果是不一样的哦 ,固 要把小面的点击事件设置为false       

8.代码优化,能提取的代买尽量前期全部提取方便后面的页面调用

  1)每个页面的title 和底部的Bar 

  2)能够复用的布局以及差别不是很大布局样式尽量写在一起

9.两个activity 传递的是对象数组的时候需要注意!!注意

  问题: 正常我们只需要在javabeen里面集成 Serializable 就可以了,可是发现数据传递不过去,还报出来莫名的错误这是为什么呢为什么呢!!! 

   解决方案: 继承了Serializable 这个类的内部类也需要集成 Serializable