美文网首页原理Android技术知识Android开发
模仿简书ios版app个人信息界面

模仿简书ios版app个人信息界面

作者: ldoublem | 来源:发表于2016-05-16 14:18 被阅读2675次

android版本简书app的个人信息界面没有像ios版本滑动个人信息头像随着滑动的距离改变大小。于是乎就模仿着ios版写了简单的例子。

效果.gif

我是直接使用了listview,然后根据HeaderView滑动的距离控制头像的大小和标签按钮的显示。


布局.png
 listview.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onScroll(AbsListView absListView, int firstVisibleItem,
                                 int visibleItemCount, int totalItemCount) {
                if (firstVisibleItem == 0) {
                  //headerview在屏幕范围内将标签栏隐藏
                  int scrollY=getScrollY();
                 //计算控件放大缩小的比例
                float f = 1.0f-(float) (scrollY * 1.0 / (头像的原始高度));
                if (f < 0.45f) {
                        f = 0.45f;//最小显示比例
                    } else if (f > 0.85f) {
                        f = 0.85f;//最大显示比例
                    }
                 int w = (int) (头像的原始高度  * f);
                 ly_logo.setLayoutParams(new LinearLayout.LayoutParams(w, w));//设置头像父类容器的高和宽
                 if (ly_logo.getChildCount() > 1) {
                        ly_logo.removeViewAt(1);//将上一次add过的view删除
                  }
                    iv_photo = new RoundedImageView(ActivityTest.this);
                    iv_photo.setImageResource(R.mipmap.icon);
                    ly_logo.addView(iv_photo);

                } else {
                  //headerview超出屏幕范围将标签栏显示
                }


            }
        });

获得滑动的高度

public int getScrollY() {

        View v = listview.getChildAt(0);

        int top = 0;

        if (v == null) {
            return 0;
        } else {
            top = v.getTop();

        }
        return top;
    }

相关文章

网友评论

本文标题:模仿简书ios版app个人信息界面

本文链接:https://www.haomeiwen.com/subject/wssbrttx.html