滑动隐藏和显示标题栏

来源:互联网 发布:求职网站 知乎 编辑:程序博客网 时间:2024/05/18 02:31

滑动隐藏和显示标题栏

1.MainActivity.java

import android.content.Context;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.ViewConfiguration;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.RelativeLayout;import android.animation.Animator;import android.animation.ObjectAnimator;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends ActionBarActivity {    private ListView mListView;    private RelativeLayout mTitle;    private int mTouchSlop;         //滑动限定停止值    private ListAdapter mAdapter;   //适配器    private float mFirstY;    private float mCurrentY;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();        initView();        showOrHide(true);    }    private void initView() {        mListView = (ListView) findViewById(R.id.listview);        mTitle = (RelativeLayout) findViewById(R.id.id_title);        mAdapter = new ListAdapter(this,getData());        mListView.setAdapter(mAdapter);        mListView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction()) {                    case MotionEvent.ACTION_DOWN:                        mFirstY = event.getY();                        break;                    case MotionEvent.ACTION_MOVE:                        mCurrentY = event.getY();                        if (mCurrentY - mFirstY > mTouchSlop) {                            showOrHide(true); //下滑 显示titlebar                        } else if (mFirstY - mCurrentY > mTouchSlop) {                            showOrHide(false); //上滑 隐藏titlebar                        }                        break;                    case MotionEvent.ACTION_UP:                        break;                }                return false;            }        });    }    private List<String> getData() {        List<String> data = new ArrayList<>();        for(int i = 0;i < 30;i++){            data.add(String.valueOf(i));        }        return data;    }    private Animator mAnimationTitle;    private Animator mAnimationContent;    private void showOrHide(boolean tag) {        if (mAnimationTitle != null && mAnimationTitle.isRunning()) {            mAnimationTitle.cancel();        }        if (mAnimationContent != null && mAnimationContent.isRunning()) {            mAnimationContent.cancel();        }        if (tag) {            mAnimationTitle = ObjectAnimator.ofFloat(mTitle, "translationY", mTitle.getTranslationY(), 0);            mAnimationContent = ObjectAnimator.ofFloat(mListView, "translationY", mListView.getTranslationY(), getResources().getDimension(R.dimen.title));        } else {            mAnimationTitle = ObjectAnimator.ofFloat(mTitle,"translationY",mTitle.getTranslationY(),-mTitle.getHeight());            mAnimationContent = ObjectAnimator.ofFloat(mListView,"translationY",mListView.getTranslationY(),0);        }        mAnimationTitle.start();        mAnimationContent.start();    }    class ListAdapter extends BaseAdapter{        private List<String> list;        private LayoutInflater inflater;        public ListAdapter(Context content,List<String> list){            this.list = list;            inflater = LayoutInflater.from(content);        }        @Override        public int getCount() {            return list == null ? 0 :list.size();        }        @Override        public Object getItem(int position) {            return list.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolper vh = null;            if(convertView == null){                vh = new ViewHolper();                convertView = inflater.inflate(R.layout.lv_item,parent,false);                vh.text = (TextView) convertView.findViewById(R.id.list_item);                convertView.setTag(vh);            }else{                vh = (ViewHolper) convertView.getTag();            }            vh.text.setText(list.get(position));            return convertView;        }        class ViewHolper{            TextView text;        }    }}



2.标题栏的高度值

<dimen name="title">50dp</dimen>

3.布局文件
lv_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/list_item"        android:layout_width="match_parent"        android:layout_height="35dp"        android:gravity="center"        /></LinearLayout>


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">    <RelativeLayout        android:id="@+id/id_title"        android:background="#0ac39e"        android:layout_width="match_parent"        android:layout_height="@dimen/title">        <TextView            android:text="两颗心"            android:layout_centerInParent="true"            android:textSize="22sp"            android:textColor="#ffffff"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </RelativeLayout>    <ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="match_parent"/></RelativeLayout>









0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一岁宝宝没耐心怎么办 孩子挑食 幼儿园老师该怎么办 小孩被惯的无法无天怎么办 高中的儿子不写作业怎么办 儿子总是不写作业怎么办 长鸡眼脚背肿了怎么办 脚上反复长鸡眼怎么办 脚底长鸡眼很痒怎么办 小脚趾上长鸡眼怎么办 6岁宝宝不爱学习怎么办 上班站久了腿肿怎么办 站时间长了腿肿怎么办 孩子做作业老是粗心大意怎么办 高中孩子没学习兴趣怎么办 初三孩子失去学习兴趣怎么办 初二对学习兴趣不大怎么办 脸上痒发红发肿怎么办 孩子作业拖拉爱丢三落四怎么办 腿肌肉按摩肿了怎么办 孩子上一年级成绩差怎么办 小孩脖子拧筋了怎么办 小孩塑料玩具拧不出来怎么办 一年级孩子做数学题粗心怎么办 手和脚有点肿怎么办 手破了之后肿了怎么办 手指肿了有脓怎么办 宝宝手指红肿有脓怎么办 孩子一听做作业就烦气怎么办 虎皮鹦鹉脚瘸了怎么办 虎皮鹦鹉脚受伤了怎么办 虎皮鹦鹉脚流血了怎么办 虎皮鹦鹉被风扇打到脚怎么办 虎皮鹦鹉脚脱臼了怎么办 孩子作业做得慢怎么办 员工给公司造成损失怎么办 小孩有写不完的作业家长怎么办 一年级孩子作业太粗心怎么办 孩子最近不好好做作业怎么办 工作压力大害怕做不好怎么办 孩子的数算不对怎么办? 孩子计算老是出错怎么办呢