web-dev-qa-db-ja.com

AndroidのLongPressでのイベントの長さはどれくらいですか?

AndroidはLongPressのイベントをサポートしています。私が持っている質問は、イベントをトリガーするための「プレス」が「どのくらい」(ミリ秒単位)かということです。

41
mobibob

標準の長押し時間は getLongPressTimeout() によって返されるものです。これは現在500ミリ秒ですが、変更される可能性があります(1.0では1000ミリ秒でしたが、今後のリリースで変更されます。将来的にはユーザーになる可能性があります-カスタマイズ可能)。

ブラウザは、いくつかのより複雑な相互作用があるため、独自の長押し時間を使用します。これは1000である必要がありますが、今後も変更される可能性があります。異なるタイムアウトを一緒に追加するのではありません。

43
hackbod

Android.view.ViewConfigurationgetLongPressTimeoutメソッドを使用して、この値をプログラムで決定できます。

詳細は the docs を参照してください。

19
Roman Nurik

一般的に、 Roman Nurikが言及したようにViewConfiguration.getLongPressTimeout() を使用して、プログラムで長押しの値を取得できます。デフォルト値は500msです。

/**
 * Defines the default duration in milliseconds before a press turns into
 * a long press
 */
private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;

ただし、長押し時間は、アクセシビリティで設定することにより、グローバルにカスタマイズできます。値は、短(400 ms)、中(1000 ms)、または長(1500 ms)です。ソースコードは 設定 で確認できます。

// Long press timeout.
mSelectLongPressTimeoutPreference =
        (ListPreference) findPreference(SELECT_LONG_PRESS_TIMEOUT_PREFERENCE);
mSelectLongPressTimeoutPreference.setOnPreferenceChangeListener(this);
if (mLongPressTimeoutValueToTitleMap.size() == 0) {
    String[] timeoutValues = getResources().getStringArray(
            R.array.long_press_timeout_selector_values);
    mLongPressTimeoutDefault = Integer.parseInt(timeoutValues[0]);
    String[] timeoutTitles = getResources().getStringArray(
            R.array.long_press_timeout_selector_titles);
    final int timeoutValueCount = timeoutValues.length;
    for (int i = 0; i < timeoutValueCount; i++) {
        mLongPressTimeoutValueToTitleMap.put(timeoutValues[i], timeoutTitles[i]);
    }
}
4
Viking Den

これは R.array.long_press_timeout_selector_titles のようになります:

    <!-- Titles for the list of long press timeout options. -->
    <string-array name="long_press_timeout_selector_titles">
        <!-- A title for the option for short long-press timeout [CHAR LIMIT=25] -->
        <item>Short</item>
        <!-- A title for the option for medium long-press timeout [CHAR LIMIT=25] -->
        <item>Medium</item>
        <!-- A title for the option for long long-press timeout [CHAR LIMIT=25] -->
        <item>Long</item>
    </string-array>
    <!-- Values for the list of long press timeout options. -->
    <string-array name="long_press_timeout_selector_values" translatable="false">
        <item>400</item>
        <item>1000</item>
        <item>1500</item>
    </string-array>
3
Viking Den

うーん...私は累積時間を得ることを望んでいた。私が知る限り、getLongPressTimeout()は、event-pressが開始されたと判断されたときに追加されるコンポーネント時間に、TAP_TIMEOUTに加えて???その後、Webブラウザの場合は1000ms。

1650msと計算しましたが、resultantの値を確認します。その理由は、長期保有を予測するためにSDKと統合されていないものが必要だからです。

GetLongPressTimeoutの値は500ミリ秒であると思いますが、ジェスチャーには明らかに時間がかかり、2秒近くかかります。

1
mobibob

ビュー(およびそのほとんどのサブクラス)はgetLongPressTimeoutを使用します。おそらく、ブラウザーではデフォルトのタイムアウトでは不十分でした。

0
James