我在用ScrollView刷手机,用的是onFling功能。我面临的问题是,当我从上到下滑动/滚动时,它会将我的标签从一个向右/向左滑动到另一个。所以我需要我的向左/向右滑动功能在我滚动时不起作用。
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
final RelativeLayout detail = (RelativeLayout) findViewById(R.id.layout_detail);
final RelativeLayout photo = (RelativeLayout) findViewById(R.id.layout_detail_photo);
final RelativeLayout pod = (RelativeLayout) findViewById(R.id.layout_detail_pod);
final ToggleButton btn_detail = (ToggleButton) findViewById(R.id.btn_detail);
final ToggleButton btn_pod = (ToggleButton) findViewById(R.id.btn_pod);
final ToggleButton btn_photo = (ToggleButton) findViewById(R.id.btn_photo);
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if ((detail.getVisibility() == View.VISIBLE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.VISIBLE);
btn_photo.setSelected(false);
btn_pod.setSelected(true);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.VISIBLE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.VISIBLE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(true);
btn_pod.setSelected(false);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.VISIBLE)) {
detail.setVisibility(View.VISIBLE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(false);
btn_pod.setSelected(false);
btn_detail.setSelected(true);
}
}
// left to right swipe
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if ((detail.getVisibility() == View.VISIBLE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.VISIBLE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(true);
btn_pod.setSelected(false);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.VISIBLE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.VISIBLE);
btn_photo.setSelected(false);
btn_pod.setSelected(true);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.VISIBLE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.VISIBLE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(false);
btn_pod.setSelected(false);
btn_detail.setSelected(true);
}
}
return true;
}发布于 2013-07-18 09:14:47
我的建议是使用一个ViewPager,它允许你将滚动视图作为页面插入,你可以通过向左和向右滑动来浏览。这就是我所做的,使用视图分页程序,我创建了一个返回列表视图的PagerAdapter。在您的情况下,您可以返回滚动视图。我附加了一些代码,作为您需要插入到视图分页程序中的分页程序的基础。
public class ViewpagerAdapter extends PagerAdapter {
private Context mContext;
public ViewpagerListviewsAdapter(Context mContext) {
this.mContext = mContext;
}
@Override
public Object instantiateItem(ViewGroup group, int position) {
ListView lView = new ListView(mContext);
group.addView(lView);
return lView;
}
@Override
public void destroyItem(ViewGroup group, int position, Object object) {
View view = (View) object;
group.removeView(view);
view = null;
}
@Override
public int getCount() {
return (number of views in pager);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}发布于 2014-03-02 13:33:56
你的问题不是很清楚,但如果我理解正确的话,你会问为什么你的代码只响应向右/向左的抛出,而不是向上/向下的抛出。您只有处理左/右翻转的代码。它怎么可能对向上/向下的狂欢做出任何反应呢?代码的主线是...
if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE &&
Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY)..。应该对向上/向下的抛出做出反应。
https://stackoverflow.com/questions/17708424
复制相似问题