Android中实现Listview下拉刷新的核心代码解析

private void initHeaderView(){  //初始化headerView

mHeaderView = View.inflate(getContext(), R.layout.refresh_header, null);//获得headerView
this.addHeaderView(mHeaderView);//将headerView加在listView的上面

tvTitle = (TextView) mHeaderView.findViewById(R.id.tv_title);//刷新的提示文字
tvTime = (TextView) mHeaderView.findViewById(R.id.tv_time);//刷新的时间显示
ivArrow = (ImageView) mHeaderView.findViewById(R.id.iv_arr);//下拉箭头
pbProgress = (ProgressBar) mHeaderView.findViewById(R.id.pb_progress);//旋转的进度条
mHeaderView.measure(0, 0);
mHeaderViewHeight = mHeaderView.getMeasuredHeight();//测得headerView的高度

mHeaderView.setPadding(0, -mHeaderViewHeight, 0, 0);// 隐藏头布局
initArrowAnim();// 初始化箭头动画

}

回忆2016

  2016年对我来说是充满收获与回忆的一年,更是不寻常的一年,经历了太多之前从未经历过的事情。我想这一年可以大致可以分为三个阶段。

迪拜-德黑兰之旅

  从去年年底开始,老师就一直提醒我寒假回家记得办护照,明年出国比赛,去的是伊朗首都德黑兰和德国的莱比锡(这个后来没去成)。当时我知道我们学校RoboCup团队每年都会有学生出国比赛,而且成绩还不错,所以我当时我就觉得这是个难得的机会但对我来说更是个挑战。因为学校花了那么多钱让你出国,成绩难看的话,也不好交代。所以寒假在家一方面在不停的改代码,调试球队,另一方面则在准备比赛报名审核的材料,由于报名网站全英文再加上与那边互通邮件也用的英文,所以当时觉得英语水平好真的是太重要了!开学那天,伊朗那边比赛的审核认证通过了,这就代表我们伊朗那边肯定能去了。然后是等德国那边的审核结果,过了俩星期,结果出来了,出事了,由于代码不恰当的引用,涉及侵权,然后被拒绝参赛。好吧确实有些伤感。。

设计模式六大原则

1.单一职责原则:不要存在多于一个导致类变更的原因。

通俗的说:即一个类只负责一项职责。

2.里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象。

通俗的说:当使用继承时。类 B 继承类 A 时,除添加新的方法完成新增功能 外,尽量不要重写父类 A的方法, 也尽量不要重载父类 A 的方法。 如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破坏。子类可以扩展父类的功能,但不能改变父类原有的功能。

Android开发中,那些让你相见恨晚的方法、类或接口(转)

  • getParent().requestDisallowInterceptTouchEvent(true);剥夺父view 对touch 事件的处理权,谁用谁知道。
  • ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue); 用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变。
  • Canvas中clipRect、clipPath和clipRegion 剪切区域的API。
  • Bitmap.extractAlpha ();返回一个新的Bitmap,capture原始图片的alpha 值。有的时候我们需要动态的修改一个元素的背景图片又不希望使用多张图片的时候,通过这个方法,
|