gpt4 book ai didi

android:向左或向右滑动以滑动 View

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:23 30 4
gpt4 key购买 nike

我有一个 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com