activity_main.xml

<?xml version="1.0" encoding="utf-8"?><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="com.example.fizz.myapplication.MainActivity">    <android.support.v7.widget.Toolbar  android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/toolbar" android:background="#000000"/>    <ListView  android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mylistView"/></RelativeLayout>

MainActivity

package com.example.fizz.myapplication;import android.animation.ObjectAnimator;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;import android.view.MotionEvent;import android.view.View;import android.view.ViewConfiguration;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private final String TAG = MainActivity.class.getSimpleName();    private ListView mListView;    private List<String> mDate;    private Toolbar mToolbar;    private ObjectAnimator mAnimator;    private boolean mShow = false;    private static Toast mToast;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initDate();        MyAdapter adapter = new MyAdapter(getApplicationContext(), mDate);        mListView.setAdapter(adapter);        View header = new View(MainActivity.this);        header.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT                , 100));        mListView.addHeaderView(header);        final float mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();// 注册listview触摸事件的监听回调        mListView.setOnTouchListener(new View.OnTouchListener() {            float mFirstY = 0;            float mCurrentY = 0;            int direction = 0;            @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();//获取距离父布局的Y轴距离                        if (mCurrentY - mFirstY > mTouchSlop) {                            toast(MainActivity.this,"向下滑动");                            direction = 0;                        } else if (mCurrentY - mFirstY < mTouchSlop) {                            toast(MainActivity.this,"向上滑动");                            direction = 1;                        }                        if (direction == 1) {                            if (mShow) {                                toolbarAnim(1);                                mShow = !mShow;                            }                        } else if (direction == 0) {                            if (!mShow) {                                toolbarAnim(0);                                mShow = !mShow;                            }                        }                        break;                    case MotionEvent.ACTION_POINTER_UP:                        break;                }                return false;            }        });    }    /** * 初始化视图 主要就是一个toolbar,来自v7包 */    private void initView() {        mListView = (ListView) findViewById(R.id.mylistView);        mToolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(mToolbar);    }    /** * 初始化listview的数据 */    private void initDate() {        mDate = new ArrayList<>();        for (int i = 0; i < 100; i++) {            mDate.add("this is the" + i + "date");        }    }    /** * @param flag 指示动画行为的标签,为1的时时候向下滑动,状态栏消失。为0的时候向上滑动,状态栏出现。 */    private void toolbarAnim(int flag) {        if (mAnimator != null && mAnimator.isRunning()) {            mAnimator.cancel();        }        if (flag == 0) {//向下滑动            mAnimator = ObjectAnimator.ofFloat(mToolbar, "translationY", mToolbar.getTranslationY()                    , 0);        } else {//向上滑动            mAnimator = ObjectAnimator.ofFloat(mToolbar, "translationY", mToolbar.getTranslationY()                    , -mToolbar.getHeight());        }        mAnimator.start();    }    /** * toast管理 * @param context * @param msg */    private static void toast(Context context,String msg){        if (mToast == null) {            mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);        }else {            mToast.setText(msg);        }        mToast.show();    }}

MyAdapter

package com.example.fizz.myapplication;import android.content.Context;import android.graphics.Color;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.ArrayList;import java.util.List;/** * Created by FizZ on 2016/4/26. */public class MyAdapter extends BaseAdapter {    private List<String> mDate;    private LayoutInflater mInflater;    public MyAdapter(Context context,List<String> date) {        mDate = new ArrayList<>();        mDate = date;        mInflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return mDate.size();    }    @Override    public Object getItem(int position) {        return mDate.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        TextView tv= null;        if (convertView == null) {            convertView = mInflater.inflate(android.R.layout.simple_list_item_1, null);            tv = (TextView) convertView.findViewById(android.R.id.text1);            convertView.setTag(tv);        }else {            tv = (TextView) convertView.getTag();        }        tv.setTextColor(Color.RED);        tv.setText(mDate.get(position));        return convertView;    }}
<resources>    <!-- Base application theme. -->    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style></resources>

记得app主题选择NoAcitonBar的。


更多相关文章

  1. android ViewGroup左右滑屏方法2
  2. Android(安卓)有时环信初始化失败,创建applocation失败
  3. Android带删除按钮的ListView
  4. Android(安卓)Studio 登录功能实现
  5. numberPicker实现时间选择设置功能
  6. Android(安卓)recyclerview 支持网格布局的间隙平均分割
  7. Android滑动解锁控件
  8. android srcollview按钮顶部停留
  9. android Notification动态更新

随机推荐

  1. Android(安卓)Studio “Cannot resolve s
  2. android中查找某个Activity中的view
  3. Bluetooth in Android(安卓)4.2 and 4.3(
  4. 修改Android中AVD的目录
  5. Android(安卓)数据显示在屏幕上
  6. Android(安卓)Studio免Root无线真机调试
  7. android studio Activity标题栏研究
  8. PopWindow使用方法详解
  9. Android正方形View
  10. Android中TextView输入字数统计和限制