- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 ListView 。单击某个项目时,将打开该项目的详细 View 。此布局有许多小部件,如 TextView 、ImageView 按钮
等。现在我想滑动项目的详细 View 以显示列表中下一项的详细 View 。从左到右与上一项类似。
我无法实现 View 滑动我已经完成了如何获取列表中的上一个/下一个项目。但是真正的滑动才是问题
我尝试了像 Android: Swipe left to right and right to left 中那样的手势检测器 |
和其他一些例子。但是当我尝试滑动时,没有任何效果。我根本看不到任何视觉滑动。
如何解决这个问题?
尝试了这段代码,但仍然没有发生滑动
public class ProductActivity extends Activity implements OnGestureListener {
@
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product_details);
setContent();
}
private void setContent() {
Bundle extras = getIntent().getExtras();
TextView title = (TextView) findViewById(R.id.title);
title.setText(extras.getString("Title"));
TextView desc = (TextView) findViewById(R.id.desc);
desc.setText(extras.getString("Desc"));
Button buy = (Button) findViewById(R.id.buy);
String priceTag = ("$" + String.format("%.2g", extras.getDouble("Price")) + " Buy Now >>");
buy.setText(priceTag);
ImageView image = (ImageView) findViewById(R.id.productimage);
Utils.imageLoader.DisplayImage(extras.getString("Image"), image);
}
private static final int SWIPE_MIN_DISTANCE = 6; // 120;
private static final int SWIPE_MAX_OFF_PATH = 125; // 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100; // 200;
private GestureDetector gestureScanner;
@
Override
public boolean onTouchEvent(MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
// @Override
public boolean onDown(MotionEvent e) {
// viewA.setText("-" + "DOWN" + "-");
return true;
}
// @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Left Swipe",
Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Right Swipe",
Toast.LENGTH_SHORT).show();
} else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe up",
Toast.LENGTH_SHORT).show();
} else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe down",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// nothing
}
return true;
}
@
Override
public void onLongPress(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Long Press",
Toast.LENGTH_SHORT);
mToast.show();
}
// @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// viewA.setText("-" + "SCROLL" + "-");
return true;
}
// @Override
public void onShowPress(MotionEvent e) {
// viewA.setText("-" + "SHOW PRESS" + "-");
} // @Override
public boolean onSingleTapUp(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap",
Toast.LENGTH_SHORT);
mToast.show();
return true;
}
}
最佳答案
我认为新答案会是个好主意,因为旧答案是如此不同。
我将从一些背景开始:这里的想法是使用水平 ScrollView 以一种漂亮的方式移动到下一组控件。所以当用户停止向左或向右滚动 ScrollView 时,我们想要更改图片和文本,然后将滚动条移回中间,为下一次滑动做准备。有人已经回答了 ScrollView 停止时如何监听我已经包含了一个几乎可行的示例,说明您可以如何使用它来获得您正在寻找的效果。
我希望这对您有所帮助,如果您还有其他问题,请随时询问。
@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY) {
if (Math.abs(y - oldY) > SlowDownThreshold) {
currentlyScrolling = true;
} else {
currentlyScrolling = false;
if (!currentlyTouching) {
//scrolling stopped...handle here
//Check if it was a left or right swipe by comparing the new and old scroll locations
if (y > oldY) {
//Scroll moved Right
//So we would do something like
setContents(Index + 1);
//We find out where the middle of the scroll is
int middleHScroll = (Hscrollview.getMeasuredWidth() / 2) - (Hscrollview.getMeasuredWidth() / 2)
//We then return the scroll view to the middle
HScroll.scrollTo(middleHScroll);
} else {
//Scroll moved Left
//We get set the pictures and text to the previous Index of the contents
setContents(Index - 1);
//We find out where the middle of the scroll is
int middleHScroll = (Hscrollview.getMeasuredWidth() / 2) - (Hscrollview.getMeasuredWidth() / 2)
//We then return the scroll view to the middle
HScroll.scrollTo(middleHScroll);
}
super.onScrollChanged(x, y, oldX, oldY);
}
}
}
xml 应该遵循这些原则。要使这项工作正常进行,还有很多工作要做,但我希望这能让您朝着正确的方向前进。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar"
android:gravity="center_horizontal"
android:text="PRODUCTS >> PRODUCT DETAILS" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="2" >
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="70dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/productimage3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="70dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/product_detail_gradient"
android:minHeight="100dp"
android:minWidth="100dp" />
<ImageView
android:id="@+id/productimage2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="70dp"
android:layout_marginRight="70dp"
android:layout_weight="1"
android:background="@drawable/product_detail_gradient"
android:minHeight="100dp"
android:minWidth="100dp" />
<ImageView
android:id="@+id/productimage1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="70dp"
android:layout_marginRight="70dp"
android:layout_weight="1"
android:background="@drawable/product_detail_gradient"
android:minHeight="100dp"
android:minWidth="100dp" />
</LinearLayout>
</HorizontalScrollView>
<RelativeLayout
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/HorizontalScrollView1"
android:layout_weight="1"
android:background="@drawable/black_img_bg" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dip"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/desc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/title" >
</TextView>
<Button
android:id="@+id/addtocart"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/button_green_lhs"
android:gravity="left|center_vertical"
android:onClick="addToCartOrBuy"
android:text="Add To Cart"
android:textSize="10dip" />
<Button
android:id="@+id/buy"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/addtocart"
android:background="@drawable/button_orange_mid"
android:onClick="addToCartOrBuy"
android:text="Buy"
android:textSize="10dip" />
<Button
android:id="@+id/tellafriend"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/buy"
android:background="@drawable/button_green_rhs"
android:gravity="right|center_vertical"
android:onClick="tellAFriend"
android:text="Tell A Friend"
android:textSize="10dip" />
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
关于android:向左或向右滑动以滑动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970249/
问题是我必须几乎严格水平滑动才能使滑动操作起作用。我希望滑动时有更多的自由度。我希望当我对角滑动时滑动也能起作用。我应该如何更改此代码? 这是代码 public class OnSwipeTouch
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyO
我正在查看 DeleteIntent 以接收通知 View 滑动以关闭。如果用户向左或向右滑动,我看不到它可以返回。基本上,我想用左滑动表示否,右滑动表示是;而不是为其他 UI 使用 Android
我最近和现在都在玩 jquery - 试图让动画工作。 整个想法基本上是一个全屏 slider 。我们有几个部分的绝对位置和高度为文档的 100% - 在 jquery 中我们正在玩 z-index。
我正在使用: ViewController = [[ViewControllerClass alloc] initWithNibName:@"ViewControllerClass" bundle:[
我试图通过使用 jquery 向右缓慢滑动来显示内容来扩展按钮,但我无法让它工作。另外,我没有控制台错误 $( document ).ready(function() { $('.btn'
试图将这个“手势”功能添加到我的第一个程序中,几乎我所做的每一次搜索都来到了这个线程: Fling gesture detection on grid layout 我能够让它工作..但就我而言,我不
这个问题在这里已经有了答案: How to turn off the automatic gesture to go back a view with a navigation controller
我试图检测左右滑动,但我遇到了一个问题,例如,如果用户向上或向下滑动并稍微向其中一侧滑动,它会将其检测为向左滑动(例如) constructor(props) { super(props)
我一直在研究图片库 [html5],它在桌面版本中运行良好,我想为 Ipad/平板电脑设备添加基于触摸的事件。 您能否建议如何使用 javascript/jquery 添加基于触摸的事件。 谢谢,斯里
我需要检测左/右滑动并使用react,但希望用户能够在同一元素上滚动,因此只要他仅向左/向右移动手指,并进行最大的上/下移动X像素时,它不应该滚动,但是当他超过X时,它应该滚动。 所以我所做的是: v
原始 HTML: Donor Rankings /img/right_arrow.png" style="right:0; padding-left:10px; cursor:pointer
我想向 ScrollView 添加滑动功能(从右到左和从左到右),但不拦截所有触摸事件,这样子按钮仍然可以点击。 我像这样向 ScrollView 添加了触摸监听器: this.getView().f
我已经像这样创建了一个 RecyclerView ItemTouchHelper - public class MyItemTouchHelper extends android.support.v7
我想同时滑动两个 div(左/右、右/左、上/下、下/上)。这是一个 JSFiddle它在哪里做的,但是当我在这个 JSFiddle 中隐藏 div 时,它不是同时在彼此之上的。我试过使用 anima
当我切换我的滑动菜单时,我会让我的菜单在右边滑动。怎么做到的?到目前为止,我只能通过 position:fixed 来做到这一点,但这对我有害,因为它会影响导航——显然屏幕是固定的!那么如何在不修复我
我有一个垂直滚动的 collectionView,覆盖设备上的整个屏幕(即全屏)。 我已经为我的 collectionView 注册了 向左和向右滑动 手势。 //------------right
我正在开发一个应用程序,我需要一个类似于我的三星 Galaxy S 的联系人 ListView 的 ListView: 当我向右滑动手指时,我可以向该联系人发送消息。 当我向右滑动手指时,我可以调用我
我在多个地方找到了以下代码来向左/向右滑动: $('#hello').hide('slide', {direction: 'left'}, 1000); 但是,我无法让它工作。这是我正在尝试的简约测试
这个问题在这里已经有了答案: jQuery: Slide left and slide right (4 个答案) 关闭 9 年前。 有没有一种简单的方法可以根据我在下面提供的上/下代码片段将其变成
我是一名优秀的程序员,十分优秀!