0

ボタンを押すと着信音が鳴り、ボタンを押し続けると、サウンドファイルを保存するかどうかを尋ねるメッセージボックスが表示されるアプリを見ました。ボタンが数秒間押されたかどうかをアプリに検出させたいと思います。

ボタンが長押しされたかどうかを検出する方法がわかりません。私はそれをグーグルで試しましたが、空になりました。

4

3 に答える 3

1

OnGestureListener、特に onLongPress を探しています。

http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html#onLongPress(android.view.MotionEvent)

onLongPress のみを使用する場合は、便利なクラスを使用する必要があります。

http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html

于 2013-02-05T03:03:07.893 に答える
1

どうやら onLongClickListener について読んでいないようですね。

次のリンクを参照してください。

http://developer.android.com/reference/android/view/View.OnLongClickListener.html

コード例:

buttonPlay.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Do something when clicked normally.
        }
    });

    buttonPlay.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            //Offer additional options when the view is held. 
            return true;
        }
    });

また、代わりに registerForContextMenu() を呼び出して、リスナーを設定するビューを渡すこともできます。参照

サンプルコード:

registerForContextMenu(textView);//Registering the TextView textview for longclicks

コンテキスト メニューを拡張するには、次のコードを記述する必要があります。

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_context_menu, menu);
    }       
}   

id your_context_menuは、プロジェクトの Res/Menu/ フォルダーの下に作成された .xml ファイルである必要があります。

メニューが拡張されたら、選択されたオプションに応答するコードも記述する必要があります。

@Override
public boolean onContextItemSelected(MenuItem item) {
    Intent broadcast = new Intent();
    switch (item.getItemId()) {
    case R.id.menu_option_one:          
    //do something
    return true;
    default:
        return super.onContextItemSelected(item);
    }
}
于 2013-02-05T03:38:35.650 に答える
0

それは、「数秒程度」の部分にどれだけ具体的であるかによって異なります。ユーザーが理解できる標準的なシステム イベントであるOnLongClickListener任意のビュー ( Button... docs linkを含む) に を設定できます。ただし、このイベントのタイムアウトは 500 ミリ秒です。

OnTouchListener本当に数秒間指を離す必要がある場合は、このイベントを自分で時間を計る必要がHandlerありACTION_DOWNますpostDelayed()

于 2013-02-05T03:27:12.890 に答える