1.自定义一个Scrollview:
package com.tutor.ui.view; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; /** * 自定义scrollview * * @author jerry.yao * */ public class ObservableScrollView extends ScrollView { private ScrollViewListener scrollViewListener = null; public interface ScrollViewListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); } public ObservableScrollView(Context context) { super(context); } public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }
package com.tutor.ui.activity; import java.util.ArrayList; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.animation.TranslateAnimation; import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.Spinner; import com.hk.tutor.R; import com.tutor.ui.view.ObservableScrollView; import com.tutor.ui.view.ObservableScrollView.ScrollViewListener; import com.tutor.ui.view.TitleBar; /** * Course Selection * * @author jerry.yao * * 2015-10-19 */ public class CourseSelectionActivity extends BaseActivity implements ScrollViewListener { private Spinner spGrade; private ObservableScrollView scrollView; private FrameLayout flToolbar; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_course_selection); initView(); } private ArrayList<String> getData() { ArrayList<String> data = new ArrayList<String>(); for (int i = 0; i < 6; i++) { data.add("Grade 1 - 1" + i); } return data; } @Override protected void initView() { initTitleBar(); spGrade = getView(R.id.sp_grade); ArrayAdapter<String> adapter = new ArrayAdapter<String>(CourseSelectionActivity.this, android.R.layout.simple_list_item_1, getData()); spGrade.setAdapter(adapter); // scrollview scrollView = getView(R.id.scrollView); scrollView.setScrollViewListener(this); // toolbar flToolbar = getView(R.id.fl_toolbar); } private void initTitleBar() { TitleBar bar = getView(R.id.title_bar); bar.initBack(this); bar.setTitle(R.string.label_course_selection); } private boolean isGone = true; @Override public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) { Log.e("TAG", "oldx === " + oldx); Log.e("TAG", "x === " + x); Log.e("TAG", "oldy === " + oldy); Log.e("TAG", "y === " + y); // if (oldy < y && Math.abs(oldy - y) > 20) { if (isGone) { // 向下滚动 flToolbar.setVisibility(View.GONE); TranslateAnimation goneAnim = new TranslateAnimation(0, 0, 0, 150); goneAnim.setDuration(200); goneAnim.setFillAfter(true); flToolbar.setAnimation(goneAnim); isGone = false; } } else if (oldy > y && Math.abs(oldy - y) > 20) { if (!isGone) { // 向上滚动 flToolbar.setVisibility(View.VISIBLE); TranslateAnimation visibleAnim = new TranslateAnimation(0, 0, 150, 0); visibleAnim.setDuration(200); visibleAnim.setFillAfter(true); flToolbar.setAnimation(visibleAnim); isGone = true; } } } }