AndroidはLongPressのイベントをサポートしています。私が持っている質問は、イベントをトリガーするための「プレス」が「どのくらい」(ミリ秒単位)かということです。
標準の長押し時間は getLongPressTimeout() によって返されるものです。これは現在500ミリ秒ですが、変更される可能性があります(1.0では1000ミリ秒でしたが、今後のリリースで変更されます。将来的にはユーザーになる可能性があります-カスタマイズ可能)。
ブラウザは、いくつかのより複雑な相互作用があるため、独自の長押し時間を使用します。これは1000である必要がありますが、今後も変更される可能性があります。異なるタイムアウトを一緒に追加するのではありません。
Android.view.ViewConfiguration
のgetLongPressTimeout
メソッドを使用して、この値をプログラムで決定できます。
詳細は the docs を参照してください。
一般的に、 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]);
}
}
これは 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>
うーん...私は累積時間を得ることを望んでいた。私が知る限り、getLongPressTimeout()は、event-pressが開始されたと判断されたときに追加されるコンポーネント時間に、TAP_TIMEOUTに加えて???その後、Webブラウザの場合は1000ms。
1650msと計算しましたが、resultantの値を確認します。その理由は、長期保有を予測するためにSDKと統合されていないものが必要だからです。
GetLongPressTimeoutの値は500ミリ秒であると思いますが、ジェスチャーには明らかに時間がかかり、2秒近くかかります。
ビュー(およびそのほとんどのサブクラス)はgetLongPressTimeoutを使用します。おそらく、ブラウザーではデフォルトのタイムアウトでは不十分でした。