2012-02-28 12 views
2

私はアンドロイドで働いています。私はWebviewのフリップをしたいアプリケーションを作りたいと思っています。私は画像でフリップ操作を行ったが、私はどのように私はWebページでフリップ操作を使用することができます知りません。Android:ウェブビューのフリップ

自分の画面よりも長いWebページがあるとしたら、ユーザーが右フリップを使用したときにそのページの残りのコンテンツを表示したいとします。 通常、ページの残りのコンテンツを表示するには垂直スクロールバーを使用しますが、スクロールバーを使用したくない場合は、ページの残りのコンテンツを次のページに表示する必要があります。例えば

: -

enter image description here

私は私の質問についてのクエリは、その後、私はここに24時間午前いつでもお気軽にお尋ねください場合は、私が欲しいものを理解願っています。

これに関連するウェブリンクを教えてください。

があなたのページが読み込まれた後

+0

あなたは「フリップ」とはどういう意味ですか?これは、タッチジェスチャーや電話やその他の動きですか?あなたは詳しく説明できますか? – scorpiodawg

+0

はい、このスワイプの画面をタッチジェスチャーで表示します。 –

+3

あなたはこの問題を考え出しましたか?あなたのために働いたコードはどれですか? – MSaudi

答えて

2

...事前にありがとう、それを試してください:あなたはどのあなたができる2つのビットマップを持つことができるように

View v = getYourWebView(); 
v.setDrawingCacheEnabled(true); 

//cheat to force webview to draw itself 
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
     MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
v.buildDrawingCache(true); 
Bitmap b = Bitmap.createBitmap(v.getDrawingCache()); 
v.setDrawingCacheEnabled(false); // clear drawing cache 

は、その後、あなたは、もう一度それをあなたのWebViewをスクロールして行うことができますフリップ。 また、webviewをscrollviewに配置し、webviewを大きな高さに設定すると、ウェブサイト全体のビットマップを一度にスナップすることができます。

+0

これはウェブページのスクリーンショットを作成するのに便利です。しかし、彼がユーザーにスクリーンショットイメージを反転させるだけであれば、Webページはもはやインタラクティブではなく、リンクも、ビデオも再生しません。あなたのアイデアは間違っていますか? – Ewoks

+0

Ewoks - あなたがページを反転しているときにスクリーンショットを使用し、反転したアニメーションが終了したときに純粋なwebviewを表示できます。このように、ページはインタラクティブなままですが、webview内で垂直スクロールをロックできるかどうかはわかりません。 – Deadeye

+0

ちょっとみんな私はジェスチャーに応じてスワイプ機能を実装する方法を知ってください私はブレークまたは水平スクロールビューを使用して私のWebビューを表示することができます助けてください。 –

0

ここのコードはテストされておらず、概念コードの証明ですが、あなたの質問ではまだプロトタイピング段階にあるようです。あなたはどうやって行くのか教えてください!

ここに記載されている方法は、「原子的に」ページを反転するために機能します。つまり、ユーザーが指をスワイプすると、となり、ページが変更されます。実際のページカールの後にいる場合は、私がここに書いたものをhttp://code.google.com/p/android-page-curl/のように組み合わせる必要があります。

まず、サブクラスのWebViewには、Fling Gesture and Webview in AndroidのようにGestureListenerとGestureDetectorを接続します。私は便宜のためにここにコードをコピーしました。

class MyWebView extends WebView { 
    Context context; 
    GestureDetector gd; 

    public MyWebView(Context context) { 
     super(context); 

     this.context = context; 
     gd = new GestureDetector(context, sogl); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return gd.onTouchEvent(event); 
    } 

    GestureDetector.SimpleOnGestureListener sogl = new GestureDetector.SimpleOnGestureListener() { 
     public boolean onDown(MotionEvent event) { 
      return true; 
     } 

     public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { 
      if (event1.getRawX() > event2.getRawX()) { 
       // Scroll up 
      } else { 
       // Scroll down 
      } 
      return true; 
     } 
    }; 
} 

次に、ユーザーが「ページ」を一方向または他の方向に飛ばしたときは、次の操作を行います。

  • 例:Deadeyeの答え

@ごとに、ビットマップへのWebViewの現在の内容をレンダリングします:正確に一つのビューポートの長さ によって

View v = getYourWebView(); 
v.setDrawingCacheEnabled(true); 

// Cheat to force WebView to draw itself 
v.measure(
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) 
); 

v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
v.buildDrawingCache(true); 

Bitmap b = Bitmap.createBitmap(v.getDrawingCache()); 
v.setDrawingCacheEnabled(false); 
  • スクロールのWebViewダウン

jQueryを使用してください:

$(document).scrollTop($(document).scrollTop()+$(window).height()); 
  • すでに書いたものは何でもページ反転ロジックを使用して離れて反転後、第2のビットマップ

に次のページをレンダリングします:)

関連する問題