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);
}
}
}
2.MainActivity里代码如下:
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;
}
}
}
}