public class MoveActivity extends Activity {
TextView u;
MyScollview scollview;
boolean isHide = true;
int curMarginTop = 0;
int dp200;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.move_layout);
curMarginTop = Dp2Px(this, 400);
dp200 = curMarginTop/2 -20;
initView();
}
@SuppressLint("ClickableViewAccessibility")
private void initView() {
u = findViewById(R.id.up_tv);
scollview = findViewById(R.id.scollview);
scollview.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (oldScrollY < scrollY) {
curMarginTop = curMarginTop - (scrollY - oldScrollY);
} else if (oldScrollY > scrollY) {
curMarginTop = curMarginTop + (oldScrollY - scrollY);
}
}
});
scollview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
if (curMarginTop < dp200) {
new Handler().post(new Runnable() {
@Override
public void run() {
isHide = false;
scollview.smoothScrollTo(0, Dp2Px(MoveActivity.this, 400));
}
});
} else {
new Handler().post(new Runnable() {
@Override
public void run() {
isHide = true;
scollview.smoothScrollTo(0, 0);
}
});
}
}
return false;
}
});
u.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isHide) {
scollview.smoothScrollTo(0, 0);
} else {
scollview.smoothScrollTo(0, Dp2Px(MoveActivity.this, 400));
}
isHide = !isHide;
}
});
}
public int Dp2Px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="50dp"
android:layout_marginRight="30dp"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="#ffffff"
android:gravity="center"
android:padding="20dp"
android:text="温馨提示"
android:textColor="#FFD306"
android:textSize="20dp"/>
<com.syy.app.androidtesst.MyScollview
android:id="@+id/scollview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_marginTop="400dp"
android:orientation="vertical">
<TextView
android:id="@+id/up_tv"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="#8f8f8f"
android:gravity="center"
android:text="向上滑动显示地图"
android:textSize="20dp"/>
<ImageView
android:id="@+id/images"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="#ED1B24"/>
</LinearLayout>
</com.syy.app.androidtesst.MyScollview>
</RelativeLayout>
跟这个库的效果一样
https://github.com/MoraisIgor/SlidingDrawer