質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

3486閲覧

ViewPagerの要素のタッチイベント

choonesu

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/11/05 14:31

  • ListView

-- Viewpager(addHeaderView)
---- ImageView×5枚

というような構造になっているイメージスライダーを作成中なのですがどうしても
わからないことがあります。

n秒ごとにsetCurrentItem(position + 1)をして自動的に画像をスワイプさせていて、ユーザーのスワイプ中はこの自動スワイプを止めたいのですが、ユーザーがスワイプしたときにタッチイベントがcancelされます。
DOWN→MOVEが呼ばれた後に横にスライドしようとするとすぐにCANCELが呼ばれてUPが呼ばれません。

DOWNまたはMOVEしたときに、ViewPager#requestDisallowInterceptTouchEvent(true)を呼ぶ処理も行なったのですが、これだとUPはきちんと呼ばれるものの、Viewpagerのスワイプ自体が無効になります。

java

1@Override 2 public boolean onTouch(View v,MotionEvent e) { 3 int action = e.getAction(); 4 if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_MOVE) { 5 //TODO:自動ループをやめる処理 6 return true; 7 } else if (action == MotionEvent.ACTION_UP){ // ここがよばれない 8 //TODO:自動ループを再開する処理 9 Log.d("#","up"); 10 } 11 return false; 12 }

どなたかご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

onTouchでtrueを返すと後続の処理が実行されないため、ACTION_DOWNのあとにACTION_CANCELが呼ばれます。falseを返しましょう。

投稿2016/11/06 11:30

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

choonesu

2016/11/06 14:10

falseを返すと今度はdownしか呼ばれなくなります。 http://stackoverflow.com/questions/15799839/motionevent-action-up-not-called いろいろ調べた結果、そもそもリスナをimageviewにつけてたのが間違いで、viewgroup(viewpager)に登録しなければダメでした。その結果すべてのイベントがキャッチできました。 その理由がよくわからないのですが、ご存知ですか?もし知っていたら後学のために教えていただきたいです。
yona

2016/11/10 18:00

Viewは上の階層からイベントを伝搬するから、ViewPagerの方が先にイベントを処理してしまうからかも知れないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問