240 发简信
IP属地:湖南
  • 牛皮,你知道apt是什么东西吗? 编译生成代码那是在开发编译时,打包的时候就已经像正常代码一样在包里了. 关用户那边什么事情? 你不会觉得这些代码是在用户启动应用的时候生成的吧? 你可真懂性能呢 @愿為湘君

    Android主流IOC框架浅析

    作为一名Android程序员,对于上面这种机械化的代码你一定写到想吐了,或许多数时候你只是copy ,paste,然后再改一改,完了你可能又会觉得这种代码毫无营养,写得实在没...

  • 👍👍👍

    Android启动流程简析(三)

    接上一篇文章:Android启动流程简析(二) 7. SystemServer启动介绍 SystemServer需要从Zygote fork SystemServer开始分析...

  • 120
    Android启动流程简析(三)

    接上一篇文章:Android启动流程简析(二) 7. SystemServer启动介绍 SystemServer需要从Zygote fork SystemServer开始分析...

  • 120
    Android类加载之PathClassLoader和DexClassLoader

    第二次修改 任何结论在没有经过实际检验之前都不能够确定一定没问题。三年前写的文章回过头来发现有些部分内容是有问题的(PS:这的确比较尴尬),再次对结果进行验证之后重新修改了之...

  • 120
    Android dex文件解析

    1. 关于Android dex文件 dex文件作为Android APK的组成部分,其主要是Android的Java代码经过编译生成class文件,再经过dx命令生成的。这...

  • 编译时的性能消耗那是面对开发者的.... 对用户有啥影响啊.... 你不会觉得他新生成的代码会影响性能吧? 别逗了,他也只是findViewById而已,你不用他的,你自己也得写. 有什么区别吗?

    Android主流IOC框架浅析

    作为一名Android程序员,对于上面这种机械化的代码你一定写到想吐了,或许多数时候你只是copy ,paste,然后再改一改,完了你可能又会觉得这种代码毫无营养,写得实在没...

  • 进过测试后,手头的魅族mx5(android5.1)不能设置宽度。 :joy:

    【Android】TabLayout 自定义指示器 Indicator 样式

    注:使用新的属性需要设置implementation 'com.android.support:design:28.0.0' 在布局里加入 TabLayout,默认是下划线的...

  • 整体思路简单清晰,看了几篇解决方案,有通过反射的,有通过拉源码重写的... 总体来说,在版本支持的情况下,博主这篇文章是实现最简单,且可能出现问题的概率最小的解决方案。

    【Android】TabLayout 自定义指示器 Indicator 样式

    注:使用新的属性需要设置implementation 'com.android.support:design:28.0.0' 在布局里加入 TabLayout,默认是下划线的...

  • 【Android】TabLayout 自定义指示器 Indicator 样式

    注:使用新的属性需要设置implementation 'com.android.support:design:28.0.0' 在布局里加入 TabLayout,默认是下划线的...

  • @我是你的东坡肘子 我在使用的时候删除了那个setSelect这个函数,修改了一下选择状态的保存机制, 暂时还没有发现问题。 就以目前需要实现的地址选择来看,你这么写其实思路是非常正确的,因为本身我们设计的范围就是地址选择,所以三级tab够用,针对性的写代码思路简单清晰。 当然,如果要做的是一个通用的多级选择器的话,那就另当别论。

    Android仿京东地址选择器

    貌似图片太大了。。。。 整体思路是TabLayout+ViewPager包裹View然后利用Dialog弹出,再然后就是根据需求添加想要的选择规则blablablabla 源码

  • 请教一下,这里这个setSelect的作用是什么啊? 如果选择器被重新构建,那么这么设置也毫无意义(市级,区县级list会被重新new一个空的出来)。 如果不被重构,那么所有数据都记录在选择器中,界面也不会改变。 可能是我的思想有局限,所以想请教一下这个函数具体是应对那种特殊情况的呢?

    Android仿京东地址选择器

    貌似图片太大了。。。。 整体思路是TabLayout+ViewPager包裹View然后利用Dialog弹出,再然后就是根据需求添加想要的选择规则blablablabla 源码

  • Android仿京东地址选择器

    貌似图片太大了。。。。 整体思路是TabLayout+ViewPager包裹View然后利用Dialog弹出,再然后就是根据需求添加想要的选择规则blablablabla 源码

  • 狒神无敌!

    EventBus事件总线的使用

    今天突然得知有事件总线这个东西,正好又在等后台调接口,就去网上搜罗一个这方面的学习资料学习一下,然后我就震惊了,特么还有这么好的东西,我咋不早点知道,深的我也不知道,...

  • EventBus事件总线的使用

    今天突然得知有事件总线这个东西,正好又在等后台调接口,就去网上搜罗一个这方面的学习资料学习一下,然后我就震惊了,特么还有这么好的东西,我咋不早点知道,深的我也不知道,...

  • 首先感谢博主给出思路
    仔细看完博主的代码后,我认为还有些地方可以做小的修改。
    首先我认为onScrollStateChanged这个回调函数中,可以不写
    if (canLoadMore()) {
    // 加载数据
    loadData();
    }
    而是可以增加一个全局变量private boolean mIsLastItem; 并且onScrollStateChanged中改为
    if (i == (mListView.getAdapter().getCount() - 1)) {
    mIsLastItem = true;
    }else {
    mIsLastItem = false;
    }
    然后在dispatchTouchEvent()函数判断事件外部加上一个判断
    if (mIsLastItem && !mIsLoad) {事件判断}
    这样就保证,每次进入事件判断,都是有意义的,不会出现当前在加载,或者还未到list view的最底部就开始一直的去做touch事件判断和处理。
    最后,能够进入到事件判断的话,那么当前是否正在加载,和当前是否已经到底部这两个判断就可以省略了。
    然后就是还有一件事有疑问,现在我们假设开始加载有两种情况,第一种,只要向上滑动的距离超过了阈值,就直接开始加载,不管最后手离开屏幕的时候向上滑动的距离是多少,
    case MotionEvent.ACTION_MOVE:
    // 移动过程中判断时候能下拉加载更多
    if (canLoadMore()) {
    // 加载数据
    loadData();
    }

    break;
    博主的这里符合这种情况。
    第二种情况是,不管中间是怎么滑动的,只管最后手离开屏幕的时候的向上滑动的距离是多少,case MotionEvent.ACTION_UP:
    // 移动的终点
    mUpY = getY();
    break;
    }
    博主的这里是符合第二种情况。
    但是这么写,就感觉有点问题了,因为mUpY是最后离开屏幕才记录的,但是离开了屏幕后ACTION_MOVE又进不去了,好像会出现问题。所以我依据第一种情况,判断touch事件做了如下处理
    if (mIsLastItem && !mIsLoad) {
    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN:
    mStartY = ev.getY();
    break;
    case MotionEvent.ACTION_MOVE:
    mEndY = ev.getY();
    if ((mEndY - mStartY) >= SCALED_TOUCH_SLOP) {
    loadData();
    }
    break;
    case MotionEvent.ACTION_UP:
    break;
    }
    }

    这样符合我开始说的第一种情况。 当然我是刚刚看完,还没有自己仔细的去测试来验证自己的猜想,如果有不对的地方,还请多指证。

    SwipeRefreshLayout详解和自定义上拉加载更多

    个人主页演示Demo下载 本文重点介绍了SwipeRefreshLayout的使用和自定View继承SwipeRefreshLayout添加上拉加载更多的功能。 介绍之前,先...