webview を使用して 9 つのタイルで構成されるアプリケーションを構築したいと考えています。それらのそれぞれは、webview に読み込む .html ファイルであり、ナビゲーションはスワイプによって行われます。
これはスワイプのコードです:
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0)
onSwipeRight();
else
onSwipeLeft();
}
} else {
if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0)
onSwipeBottom();
else
onSwipeTop();
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
各onSwipe<Direction>()
メソッドは次のように構成されています。
private void onSwipeTop() {
if (row < MAX_ROW) {
row++;
loadUrl(Direction.UP);
System.out.println("Swipe Top!");
}
}
次に、別の質問で見つかったこのコードによってアニメーションが処理されます。
public void onPageFinished(WebView view, String url) {
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
imageView.setImageBitmap(Bitmap.createBitmap(webView.getDrawingCache()));
webView.setDrawingCacheEnabled(false);
imageView.setVisibility(View.VISIBLE);
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
ObjectAnimator webViewAnimator = null;
ObjectAnimator imageViewAnimator = null;
switch (currentDirection) {
case LEFT:
System.out.println(">> Left!");
webViewAnimator =
ObjectAnimator.ofFloat(webView, "translationX", webView.getWidth(), 0);
imageViewAnimator =
ObjectAnimator.ofFloat(imageView, "translationX", 0, -webView.getWidth());
break;
case RIGHT:
System.out.println(">> Right!");
webViewAnimator =
ObjectAnimator.ofFloat(webView, "translationX", -webView.getWidth(), 0);
imageViewAnimator =
ObjectAnimator.ofFloat(imageView, "translationX", 0, webView.getWidth());
break;
case UP:
System.out.println(">> Up!");
webViewAnimator =
ObjectAnimator.ofFloat(webView, "translationY", webView.getHeight(), 0);
imageViewAnimator =
ObjectAnimator.ofFloat(imageView, "translationY", -webView.getHeight());
break;
case BOTTOM:
System.out.println(">> Bottom!");
webViewAnimator =
ObjectAnimator.ofFloat(webView, "translationY", -webView.getHeight(), 0);
imageViewAnimator =
ObjectAnimator.ofFloat(imageView, "translationY", webView.getHeight());
break;
default:
break;
}
imageViewAnimator.setDuration(SLIDE_DURATION);
webViewAnimator.setDuration(SLIDE_DURATION);
AnimatorSet set = new AnimatorSet();
set.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
imageView.setVisibility(View.GONE);
}
});
set.playTogether(imageViewAnimator, webViewAnimator);
set.start();
私の問題: スワイプの方向を変更するとすぐに、ImageView が表示されなくなり、白い画面に置き換えられますが、スムーズなトランジション効果を得たいと考えています。誰でも私を助けることができますか?または、別の解決策を提案しますか?どんな助けでも本当に感謝します!