- как реализовать двойной клик в Андроид
- 7 ответов
- Как поймать события двойного нажатия в Android с помощью OnTouchListener
- 6 ответов
- Buttons
- Responding to Click Events
- Kotlin
- Using an OnClickListener
- Kotlin
- Styling Your Button
- Borderless button
- Custom background
- Простой щелчок кнопки
- Небольшое отступление
- Обработка нажатия на отдельный View в элементе списка
как реализовать двойной клик в Андроид
Я делаю проект, в котором я хочу отобразить конкретное сообщение на одно касание и другое сообщение на двойное касание с помощью android.Как я могу его реализовать.
мой пример кода ниже
7 ответов
Почему бы вам не использовать длительное нажатие события insted в то время как его рекомендуемый пользовательский интерфейс. Читать Ответ Тут , я настоятельно рекомендую использовать это.
или если его так или иначе вы хотите реализовать, у вас есть два варианта, один из них это с помощью boolean а во-вторых, использует Жест Слушателя.
попробуйте использовать GestureDetector .
вы можете использовать при длинном щелчке вместо двойного щелчка, переопределив этот метод
вызывается при щелчке и удержании представления.
это удержание, но для новых читателей я сделал небольшую библиотеку для упрощения такого рода вещей, проверьте эту статью: дважды щелкните прослушиватель на android.
библиотека очень маленькая, а вот Ссылка На Репозиторий GitHub.
и вы просто будете использовать его так:
попробуйте следующий измененный код::
я реализовал код, на котором цвет фона и цвет текста изменяется при нажатии на экран дважды (двойное нажатие) вот код.
можно использовать RxAndroid в таком случае в Котлине должно быть так:
- применить clicks() функция расширения на данном представлении, которая создает наблюдаемую последовательность RX.
- мы говорим RX, чтобы сгенерировать событие. после 500 мс или 2 последовательных кликов проходить в течение 500 мс.
- мы говорим RX принимать только события только с 2 последовательных щелчка
- последнее, но не менее важное: мы подписываемся на последовательность событий который является нашим обработчиком DoubleClick
Источник
Как поймать события двойного нажатия в Android с помощью OnTouchListener
Я пытаюсь поймать события двойного нажатия с помощью OnTouchListener. Я думаю, что я бы установил long для motionEvent.ACTION_DOWN, и другой длинный для второго motionEvent.ACTION_DOWN и измерить время между ними двумя, а затем сделать что-то с ним. Тем не менее, мне трудно понять, как именно подойти к этому. Я использую случаи переключения, чтобы забрать мультитач-события, поэтому я бы предпочел не пытаться перепробовать все это, чтобы реализовать GestureDetector (и, к сожалению, это невозможно реализовать как ontouchlistener, так и Gesturedetector одновременно). Любые идеи очень помогли бы:
6 ответов
Я рассматривал эту проблему ранее. Он включает в себя использование обработчика для ожидания определенного количества времени для ожидания второго щелчка:Как создать событие с одним щелчком мыши и событие с двойным щелчком при нажатии кнопки Меню?
в определении класса:
с вспомогательным классом SimpleGestureListener, который реализует GestureListener и OnDoubleTapListener, вам не нужно много делать.
Это много easyer:
вот мое решение.
для меня было важно иметь быстрое и четкое разделение «одного крана» и «двойного крана». Я пытался!—2—> первый, но имел очень плохие результаты. Может быть, результат моего вложенного использования scrollviews-кто знает.
я фокусируюсь на MotionEvent.ACTION_UP и идентификатор резьбового элемента. Чтобы сохранить первый кран живым, я использую Handler отправка отложенного сообщения (350ms), так что у пользователя есть некоторое время, чтобы разместить свой второй кран на ImageView . Если пользователь разместил второй нажмите на элемент с идентичным идентификатором я принимаю это как двойное нажатие, удалите отложенное сообщение и запустите мой пользовательский код для «двойного нажатия». Если пользователь разместил кран на элементе с другим идентификатором, я беру это как новый кран и создаю другой Handler для него.
глобальные переменные класса
Источник
Buttons
A button consists of text or an icon (or both text and an icon) that communicates what action occurs when the user touches it.
Depending on whether you want a button with text, an icon, or both, you can create the button in your layout in three ways:
- With text, using the Button class:
- With an icon, using the ImageButton class:
- With text and an icon, using the Button class with the android:drawableLeft attribute:
Key classes are the following:
Responding to Click Events
When the user clicks a button, the Button object receives an on-click event.
To define the click event handler for a button, add the android:onClick attribute to the element in your XML layout. The value for this attribute must be the name of the method you want to call in response to a click event. The Activity hosting the layout must then implement the corresponding method.
For example, here’s a layout with a button using android:onClick :
Within the Activity that hosts this layout, the following method handles the click event:
Kotlin
The method you declare in the android:onClick attribute must have a signature exactly as shown above. Specifically, the method must:
- Be public
- Return void
- Define a View as its only parameter (this will be the View that was clicked)
Using an OnClickListener
You can also declare the click event handler programmatically rather than in an XML layout. This might be necessary if you instantiate the Button at runtime or you need to declare the click behavior in a Fragment subclass.
To declare the event handler programmatically, create an View.OnClickListener object and assign it to the button by calling setOnClickListener(View.OnClickListener) . For example:
Kotlin
Styling Your Button
The appearance of your button (background image and font) may vary from one device to another, because devices by different manufacturers often have different default styles for input controls.
You can control exactly how your controls are styled using a theme that you apply to your entire application. For instance, to ensure that all devices running Android 4.0 and higher use the Holo theme in your app, declare android:theme=»@android:style/Theme.Holo» in your manifest’s element. Also read the blog post, Holo Everywhere for information about using the Holo theme while supporting older devices.
To customize individual buttons with a different background, specify the android:background attribute with a drawable or color resource. Alternatively, you can apply a style for the button, which works in a manner similar to HTML styles to define multiple style properties such as the background, font, size, and others. For more information about applying styles, see Styles and Themes.
Borderless button
One design that can be useful is a «borderless» button. Borderless buttons resemble basic buttons except that they have no borders or background but still change appearance during different states, such as when clicked.
To create a borderless button, apply the borderlessButtonStyle style to the button. For example:
Custom background
If you want to truly redefine the appearance of your button, you can specify a custom background. Instead of supplying a simple bitmap or color, however, your background should be a state list resource that changes appearance depending on the button’s current state.
You can define the state list in an XML file that defines three different images or colors to use for the different button states.
To create a state list drawable for your button background:
- Create three bitmaps for the button background that represent the default, pressed, and focused button states.
To ensure that your images fit buttons of various sizes, create the bitmaps as Nine-patch bitmaps.
Источник
Простой щелчок кнопки
Небольшое отступление
Когда я загорелся желанием изучить программирование под Android, то через поисковый запрос Google попытался получить список русскоязычных сайтов, где имелись руководства для Android. В принципе, документация на английском меня не пугает, но хотелось быстрее вникнуть в особенности программирования. Но обилие новых терминов и понятий на первых порах могли затруднить такое понимание, читая документацию в оригинале. Я честно открыл около двадцати различных ссылок и результат меня разочаровал. Практически везде в качестве руководства предлагалось только две статьи: установка необходимого программного обеспечения и перевод статьи Hello, World с официального сайта developer.android.com. Такое впечатление, что все дружно скопипастили из одного источника, добавили несколько статей из Хабра и все. Буду рад, если кто-то подскажет мне хороший ресурс для совсем начинающих — в идеале статьи должны быть написаны для людей, которые были вообще не знакомы с программированием до знакомства с Android.
Переходим к кнопке. После написания традиционного Hello, World, который выводился в TextView сразу после загрузки приложения, захотелось попробовать что-то более функциональное. Разобравшись с основными принципами размещения элементов в xml-файле, решил переписать Hello, World на более привычный манер. Добавил на форму текстовое поле EditText и кнопку Button, и стал искать в документации способ обработки щелчка. В документации (а также в статьях на Хабре) использовалась такая длинная конструкция:
То ли сказался поздний час, то ли общая усталость, но моя голова отказывалась запоминать эту конструкцию. Возможно для java-разработчиков это стандартная процедура, не вызывающая затруднений, но не для меня.
И тут, перечитывая примеры на Хабре, неожиданно наткнулся на один комментарий, где говорилось, что под Android 2.x можно использовать другую конструкцию. Спасибо, добрый человек! Его ремарка спасла меня. Все можно сделать гораздо проще.
Открываем файл main.xml и ищем тег . Добавляем к нему еще одну строчку:
Таким образом мы определили событие onClick для кнопки (щелчок) и теперь нам осталось написать обработчик события. Открываем файл HelloWorld.java и пишем сразу после события onCreate:
Обратите внимание, что имя метода butHello_Click должно совпадать со строкой, которую мы задали в атрибуте android:onClick для кнопки, а также добавляем скобки с текстом View v. В фигурных скобках пишем код, который должен выполниться при щелчке кнопки. Так как нам надо вывести текст в текстовом поле, то просто присваиваем нужный текст через метод setText.
Полный текст кода для HelloWorld.java будет выглядеть следующим образом.
После такого открытия у меня свалилась гора с плеч. Во-первых, такой код выглядит проще и понятнее для меня. Во-вторых он практически идентичен коду для Windows Phone 7. Сравните код на XAML для кнопки.
Источник
Обработка нажатия на отдельный View в элементе списка
В этой статье я опишу способ обработки нажатия на отдельную часть элемента списка. Кого заинтересовало, прошу под кат.
ПРЕДИСТОРИЯ
Недавно передо мной встала задача: реализовать возможность нажатия на отдельный View в элементе списка. Сложность заключалась в том, что метод onListItemClick() вызывается при нажатии на любую часть элемента списка (неважно, какой View находится под пальцем). Поискав решение, я ничего полезного не нашёл. Проведя несколько экспериментов, я всё-таки достиг цели.
СОЗДАНИЕ ПРОЕКТА
Создадим проект. Имя, пакет, версия ANDROID – на ваше усмотрение. Сначала разметка для элемента списка и Activity:
Я специально использую ListActivity, чтоб сократить урок. Использовать мы будем, разумеется, свой кастомный адаптер. Чтобы не морочиться с SimpleAdapter и его ArrayList > или BaseAdapter с его обязательными методами, я наследую свой адаптер от ArrayAdapter. Я не стал добавлять ViewHolder – он нам сейчас не нужен. Ну и наконец-то, сам код адаптера:
Давайте разбираться, что мы здесь накодили. В методе getView(int position, View convertView, ViewGroup parent) мы создаём вьюху для каждого элемента списка и там же находим кнопку и присваиеваем ей обработчик нажатия. Когда кнопку нажимают, появляется тост с позицией этого элемента. Как видите, всё очень просто! Правда, при этом почему-то перестаёт работать onListItemClick(ListView l, View v, int position, long id) (по крайней мере у меня). Поэтому придётся кодить обработку нажатия на нужную кнопку и на все остальные View в самом адаптере :(. Но можно сделать, как я написал выше — присвоить всем элементам OnClickListener, а потом смотреть — если наша кнопка, то одно действие, иначе — другое. А ещё лучше вынести все другие вьюхи в отдельный LinearLayout или RelativeLayout и присваивать слушатель только ему.
Ну вот в общем-то и всё. Буду рад, если этот пост поможет кому-нибудь.
Источник