gpt4 book ai didi

android - Android 上的 WebView 动画问题

转载 作者:行者123 更新时间:2023-11-30 04:43:54 25 4
gpt4 key购买 nike

我正在使用 html、css 和 javascript 开发 Android 应用程序。我的应用程序依赖于 Phonegap 框架。该应用程序由相当多的本地页面组成。在里面我正在尝试处理 Android 上的滑动手势事件的应用程序移动并根据滑动方向移动页面。即如果用户向左滑动应用程序必须调用上一个页面,然后,如果用户向右滑动,则应用程序将转发用户到下一页。

我可以使用原生 java for android 来做到这一点。但问题是,在调用页面期间,我正在为请求的页面。但是发生的是当前页面采用幻灯片效果不是请求的页面,就是滑动后的效果完成,请求的页面出现:(我正在寻找一种机制来使效果影响请求的本地页面不是当前页面。我试着延迟动画持续时间但是变得太慢了,所以变得无聊顺便说一句,没能做到这一点。

我希望你能帮助我解决这个问题,或者向我提出任何建议实现该效果的方法或机制。

这是我的代码:

public class App extends DroidGap {
/** Called when the activity is first created. */

private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

gestureDetector = new GestureDetector(new MyGestureDetector());

gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
super.loadUrl("file:///android_asset/www/index.html");

}

class MyGestureDetector extends SimpleOnGestureListener {
@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) {


appView.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_left));
appView.goBack();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
appView.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_right_in));
appView.goForward();
}
} catch (Exception e) {
// nothing
}
return false;
}
}

@Override
public boolean dispatchTouchEvent(MotionEvent e){
super.dispatchTouchEvent(e);
return gestureDetector.onTouchEvent(e);
}
}

最佳答案

您在导致不匹配的事件 goBack() 和 goForward() 之前添加动画。我建议您创建一个自定义 webview 并重写这两种方法。有点像下图。

    public class mywebView extends WebView{

public mywebView(Context context) {
super(context);
}

@Override
public void goBack(){

}

@Override
public void goForward(){
}
}

不要错过关键字@Override。现在,在这些重写的方法中,您可以添加动画代码。希望这会有所帮助。

关于android - Android 上的 WebView 动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5456125/

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