voidofglans
unread,Apr 2, 2012, 3:01:47 AM4/2/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to 日本Androidの会
はじめまして。
いつも参考にさせていただいております。
現在、WebViewを使用してアプリの制作をしております。
その際に、フリック(OnGestureListenerでのonTouchEventにて取得のonFling)が取得できずにハマっている状態で
す。
やりたいことは
WebViewで表示しているViewをフリックにて別Viewと切り替えたい
です。
現在、できているのは
・WebView内に何もloadUrl等されていない場合のViewのフリップ移動
・ViewFlipperでの遷移実装
です。
WebViewで何かしらのページ等を読み込んだ際にフリックイベントが取得できていません。
なぜか、onTouchEventではonScrollでSTOPしてしまいます。
一部ソースコードを抜粋いたしましたので
お分かりになる方いらっしゃいましたら、ご教授いただければと思います。
何卒よろしくお願いいたします。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
setAnimations();
// GestureDetectorインスタンス作成
gestureDetector = new GestureDetector(this, this);
//まずはキーボード隠します
this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
//create WebView
webview = (WebView)findViewById(R.id.webview);
//scroll
webview.setVerticalScrollbarOverlay(true);
//JSでのアクセスを許可する
webview.getSettings().setJavaScriptEnabled(true);
//縮小等を許可する
webview.getSettings().setBuiltInZoomControls(true);
//キーボード用にフォーカスを当てます
webview.requestFocus(View.FOCUS_DOWN);
//クリックした際にアプリ内遷移(intent)
webview.setWebViewClient(new WebViewClient(){});
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.d("touchE","とりあえずタッチされたよー!");
gestureDetector.onTouchEvent(ev);
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float
velocityX,
float velocityY) {
// TODO 自動生成されたメソッド・スタブ
Log.d("touchE","onFling");
// 絶対値の取得
float dx = Math.abs(velocityX);
float dy = Math.abs(velocityY);
if (dx > dy && dx > 300) {
// 指の移動方向(左右)の判定
if (e1.getX() < e2.getX()) {
viewFlipper.setInAnimation(inFromLeftAnimation);
viewFlipper.setOutAnimation(outToRightAnimation);
viewFlipper.showPrevious();
} else {
viewFlipper.setInAnimation(inFromRightAnimation);
viewFlipper.setOutAnimation(outToLeftAnimation);
viewFlipper.showNext();
}
return true;
}
return false;
}
@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float
arg2,
float arg3) {
// TODO 自動生成されたメソッド・スタブ
}