누군가가 나를 도울 수 있기를 바랍니다. 이것은 날 동안 미쳐 버렸습니다.Scrollview (Webview)는 GestureDetector와 작동하지 않습니다.
I 사용자가 나는 또한 화면의 상단에서 하단으로 스크롤 사용자를 활성화 할
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY)
를 사용하여 다시 이전 화면으로 다음 화면으로 스 와이프하고 있습니다 웹뷰를 사용하여 응용 프로그램을 설계하고있는 경우가 화면에 들어갈 수있는 것보다 더 많은 콘텐츠입니다. 그래서, main.xml 파일에 있습니다 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="800px"
android:background="#ffffff">
<ScrollView android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"/>
</ScrollView>
</LinearLayout>
문제는 스크롤보기가 작동하지 않습니다. 제스처 감지기를 사용하기 전에 자바 스크립트를 사용하여 스 와이프 감지를 활성화했지만 사용자는 왼쪽 및 오른쪽 스 와이프 동작을 통해 매우 정확해야했습니다.
나는 문제이 (가) gestureDetector이 작업을 수행 할 수 있습니다 코드로 자리 잡고 생각 - 게시됩니다 기여자에 대한 감사 :
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
String url = findURL();
if (event1.getRawX() > event2.getRawX()) {
if(isButtonScreen(url)==false){
//get next SCREEN to display
getNext(url);
}else{
}
} else {
if(isButtonScreen(url)==false)
{
//get previous
getPrevious(url);
}else{
}
}
return true;
}
나는 사용자가 오른쪽에서 왼쪽으로 스 와이프하면 그것이라고 생각, 다음을 보여 그렇지 않으면 다음 페이지는 이전 페이지를 표시합니다.
사용자가 특정 정도 내에서 왼쪽에서 오른쪽으로 스 와이프 한 후 다음 페이지를 표시하거나 사용자가 특정 각도 내에서 오른쪽에서 왼쪽으로 스 와이프 한 다음 이전 페이지를 표시하는 경우 더 명확하게 설명하고 싶습니다. 그렇지 않으면 스크롤 위로 또는 아래로 스크롤하십시오.
내가 어떻게해야합니까? 아니면 뭔가 근본적으로 빠져 있는데 다른 명백한 방식으로 작동해야합니까?
감사합니다.
죄송합니다, 잘못된 장소에 내 자신의 응답을 게시했습니다.
//check if it is a swipe or a scroll
public String isSwipe(MotionEvent event1, MotionEvent event2){
String swipeDirection = "";
double X = event1.getRawX()-event2.getRawX();
double Y = event1.getRawY()-event2.getRawY();
double Z = Math.round(Math.sqrt(Math.pow(X,2)+Math.pow(Y,2))); //the distance - rounded - in pixels
double r = Math.atan2(Y,X); //angle in radians (Cartesian system)
double swipeAngle = Math.round(r*180/Math.PI); //angle in degrees
if (swipeAngle < 0) { swipeAngle = 360 - Math.abs(swipeAngle); }
if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
swipeDirection = "left";
} else if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
swipeDirection = "left";
} else if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
swipeDirection = "right";
} else if ((swipeAngle > 45) && (swipeAngle < 135)) {
swipeDirection = "up";
} else {
swipeDirection = "down";
}
return swipeDirection;
}
가 지금은 원활 scrollDown 및 scrollUp 원하는 : 지금까지, 나는 그것이 날뛰는 또는 스크롤 인 경우 다음과 같이 볼 수있는 검사가있다. 누구나 신뢰할 수있는 답변을 얻은 경우 귀하의 의견에 진심으로 감사드립니다. 마지막으로
및
내가 사용 아래로 스크롤 :scrollBy(0, 50);
내가 실제로 아래로 강타했다 행복했다 번.
내가 좋아할만큼 매끄럽지는 않습니다. 누구든지이 점을 개선하면 가장 행복 할 것입니다.
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
String url = findURL();
if (event1.getRawX() > event2.getRawX()) {
if(isButtonScreen(url)==false){
//get next
//getNext(url);
show_toast("swipe left"+isSwipe(event1, event2));
}else{
}
} else {
if(isButtonScreen(url)==false){
//get previous
//getPrevious(url);
String result = isSwipe(event1, event2);
show_toast("swipe right "+result);
if(result.equalsIgnoreCase("down")){
//screen height + 50;
scrollBy(0, 50);
}
}else{
}
}
return true;
}
제스처와 관계없이 'ScrollView'안에 안정적으로 'WebView'(또는 스크롤되는 모든 것)을 넣을 수 없습니다. 귀하의 의견에 – CommonsWare