listview的上滑下滑监听,来隐藏和显示顶部选项栏的特效,京东 同程等APP的资源列表都有此特效.
两个重点:
①listview的setOnTouchListener监听方法
当滑动的Y位置减去按下的Y位置大于最小滑动距离时则为向下滑动
反之,当按下的Y位置减去滑动的Y位置大于最小滑动距离则为向上滑动
②位移动画
就只要这两点需要注意的,直接上代码,注释很清楚.
package com.example.android_topbar_gone;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewConfiguration;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
private RelativeLayout top_rl;
private ListView listview;
private List<Map<String, Object>>list = new ArrayList<Map<String,Object>>();
private int mTouchShop;//最小滑动距离
protected float mFirstY;//触摸下去的位置
protected float mCurrentY;//滑动时Y的位置
protected int direction;//判断是否上滑或者下滑的标志
protected boolean mShow;//判断是否执行了上滑动画
private Animator mAnimator;//动画属性
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化id
setViews();