我要做的是覆盖dispatchTouchEvent(MotionEvent ev)方法,获取动作,计算动作,然后根据动作显示底部。
这是我的基本想法:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
int action = ev.getActionMasked();
switch (action) {
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_DOWN:
mDownX = ev.getRawX();
mDownY = ev.getRawY();
break;
case MotionEvent.ACTION_MOVE:
float deltaY = ev.getRawY() - mDownY;
Log.d(TAG, "delta y: " + deltaY);
if (deltaY < -50f) {
// show bottom part
}
if (deltaY > 50f) {
// close bottom part
}
break;
default:
break;
}
return false;
}
我的问题是:我应该使用什么来更改此活动宽度的宽度并显示底部?
提前致谢: - )
答案 0 :(得分:1)
好的,所以我喜欢布局黑客。
对于这个例子,我将有一个顶部和一个底部,这是你想要在运动事件上公开的部分。
在您的滑动功能上,将bottomBlock的可见性设置为可见,animateLayoutChanges
会使其看起来像是在向上滑动。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0"
android:layout_weight="1"
android:orientation="vertical"
android:animateLayoutChanges="true" >
<LinearLayout
android:id="@+id/topBlock"
android:layout_width="match_parent"
android:layout_height="0"
android:layout_weight="1" >
</LinearLayout>
<LinearLayout
android:id="@+id/bottomBlock"
android:layout_width="match_parent"
android:layout_height="100dp"
android:visibility="gone" >
</LinearLayout>
</LinearLayout