canvas教程

Android好奇宝宝(2)

字号+ 作者:H5之家 来源:H5之家 2016-09-05 11:00 我要评论( )

不知道为什么的请再次发动你的大脑。 if (mListener.isStickyPosition(firstVisibleItem + 1)) {// 如果第二个可见的item是Sticky的// 开始推的效果,即HeadView不再显示在原点// HeadView的Bottom为第二个可见的it

不知道为什么的请再次发动你的大脑。

if (mListener.isStickyPosition(firstVisibleItem + 1)) { // 如果第二个可见的item是Sticky的 // 开始推的效果,即HeadView不再显示在原点 // HeadView的Bottom为第二个可见的item的Top // HeadView的Top为Bottom减去HeadView的高 int headBottom = getChildAt(1).getTop(); int headTop = headBottom - mHeadView.getMeasuredHeight(); Log.e("headBottom", headBottom + ""); Log.e("headTop", headTop + ""); mHeadView.layout(0, headTop, mHeadView.getMeasuredWidth(), headBottom); mListener.onHeadViewChange(mHeadView, firstVisibleItem, visibleItemCount, totalItemCount); }

(8)外部需要设置的东西

首先是需要两个布局文件,一个是ListView的item的布局文件,一个是HeadView文件,并且HeadView要长得跟item布局的左侧完全一样。我就不贴布局文件了,想看的下载Demo看吧。

然后最重要的是实现一个StickyListener并设置给JJJStickyListView。

StickyListener stickyListener = new StickyListener() { @Override public void onHeadViewChange(View hView, int firstP, int vCount, int tCount) { for (int i = firstP; i >= 0; i--) { if (isStickyPosition(i)) { TextView tvTextView = (TextView) hView.findViewById(R.id.tv_time); tvTextView.setText(datas.get(i).getTime()); break; } } } @Override public boolean isStickyPosition(int pos) { return datas.get(pos).isShowTime; } @Override public View getHeadView() { //提供HeadView View headerView = (ViewGroup) getLayoutInflater().inflate(R.layout.head, null); headerView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return headerView; } @Override public int getHeadViewWidthInDp() { return 100; } @Override public int getHeadViewHeightInDp() { return 100; } };

几点注意:

<1>onHeadViewChange方法在HeadView的内容需要更新时被回调,至于新的内容应该是什么需要根据你的数据源来判断,还不是很明白的可以下载Demo再研究一下。

<2>isStickyPosition同样需要根据你的数据源来实现。

<3>getHeadView方法需要为HeadView设置一个LayoutParams,生成LayoutParams的参数随便,因为我们已经提供了HeadView的宽和高并用其作为参数给HeadView测量,所以LayoutParams不会影响到HeadView的大小,但在测量过程中会需要到它,如果不设置的话会报空指针异常。

注:Demo里用了一个SmartAdapter,看不懂的话参考: Android好奇宝宝_04_一个有3个功能的Adapter

Demo下载

Tags:Android   Sticky   ListView   Android-好奇宝宝系列  

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android的Paint、Canvas和Matrix讲解

    Android的Paint、Canvas和Matrix讲解

    2016-09-02 13:00

  • android jni 用skia画图,运行后模拟器上没显示,求解啊

    android jni 用skia画图,运行后模拟器上没显示,求解啊

    2016-09-02 12:00

  • Android开发就业前景

    Android开发就业前景

    2016-09-02 11:00

  • Android:解析自定义view之圆形头像的各类方案

    Android:解析自定义view之圆形头像的各类方案

    2016-09-02 10:00

网友点评
6