自动显示与隐藏布局的ListView

原创 2016年05月30日 11:29:21

效果图

这里写图片描述

代码

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    String[] datas = {"A","A","A","A","A","A","A","A","A","A",
            "A","A","A","A","A","A","A","A","A","A","A","A","A",};
    private int scaledTouchSlop;
    private float firstY = 0;
    private Toolbar toolbar;
    private ObjectAnimator animtor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        listView = (ListView) findViewById(R.id.listview);
        //设置空的布局
        initHeadView();//添加headvier要在setAdapter之前
        listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,datas));
        //判断认为是滑动的最小距离
        scaledTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();
        listView.setOnTouchListener(new View.OnTouchListener() {
            private float currentY;
            private int direction;
            private boolean mShow = true;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        firstY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        currentY = event.getY();
                        if(currentY - firstY >scaledTouchSlop){
                            direction = 0;//向下
                        }else if(firstY - currentY > scaledTouchSlop){
                            direction = 1;//向上
                        }
                        if(direction == 1){
                            if(mShow){
                                toobarAnim(1);
                                mShow = !mShow;
                            }
                        }else if(direction == 0){
                            if(!mShow){
                                toobarAnim(0);
                                mShow = !mShow;
                            }
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                        break;
                }
                return false;//注意此处不能返回true,因为如果返回true,onTouchEvent就无法执行,导致的后果是ListView无法滑动
            }
        });
    }

    /**
     * 设置头布局,注意:这个头布局的高度要和ToolBar的高度一致
     */
    public void initHeadView(){
        View view = new View(this);
        AbsListView.LayoutParams params = new AbsListView.LayoutParams
                (AbsListView.LayoutParams.MATCH_PARENT,
                        (int)getResources().getDimension(R.dimen.abc_action_bar_default_height_material));
        view.setLayoutParams(params);
        listView.addHeaderView(view);
    }

    public void toobarAnim(int direction){
        //开始新的动画之前要先取消以前的动画
        if(animtor!=null&&animtor.isRunning()){
            animtor.cancel();
        }
        if(direction == 0){//手指向下滑动,显示ToolBar
            //toolbar.getTranslationY()获取的是Toolbar距离自己顶部的距离
            animtor = ObjectAnimator.ofFloat(toolbar, "translationY", toolbar.getTranslationY(), 0);
        }else if( direction == 1){
            animtor = ObjectAnimator.ofFloat(toolbar, "translationY", toolbar.getTranslationY(), -toolbar.getHeight());
        }
        animtor.start();
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android 自动显示与隐藏布局的 ListView

下面这个效果是,向下滑动 ListView ,其顶部布局自动显示;向上滑动 ListView ,其顶部的布局自动隐藏。效果如下:        首先这个效果的实现大致需要如下几步...

自动显示和隐藏头布局的ListView(转)

From zsml2016(http://blog.csdn.net/qq_29269233)Power byzsml2016侵权必究! 前言: 今天在看Android进阶的书籍,发现越看...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

实现ListView的条目下自动隐藏显示的布局

这个想法是我在看了sina微博的塞班客户端的微博显示效果而想移植到Android平台上,因为它的体验很好,而我们做的效果就是要方便,要用户有很好的体验,但是可惜的是在sina官方的Android客户端...

自动显示和隐藏头布局的ListView原来是那么简单

尊重原创,转载请注明:From zsml2016(http://blog.csdn.net/qq_29269233)Power byzsml2016侵权必究! 前言: 今天在看Android进阶的书籍...

Android群英传学习笔记——自动显示、隐藏布局的ListView

Android群英传学习笔记——自动显示、隐藏布局的ListView

Android 彻底征服 ListView 三 自动显示 隐藏布局的ListView

当我们在ListView上滑动的时候,顶部的ActionBar或者ToolBar就会响应的隐藏或显示,在滚动前界面上加载了上方的标题栏和右下角的悬浮编辑按钮.当用户项下滚动时,标题栏和悬浮按钮消失,让...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)