Форум программистов, компьютерный форум CyberForum.ru

Работа с кнопками - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
23.03.2013, 11:22     Работа с кнопками #1
Есть 4 ImageButton при нажатии на которых должно происходить одно действие, а при отжатии - другое. Это работает. Но если провести пальцем по всем 4-ём кнопкам - ничего не происходит. Нужно сделать, чтобы в этом случае, они работали как в пианино. Как чтобы при наведении пальцем на кнопку сработало ACTION_DOWN, а при выходе за границы кнопки - ACTION_UP.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        TextView tvOut = (TextView) findViewById(R.id.tvOut);
        switch (v.getId()) {
        case R.id.ImageButton01:
            if (action == MotionEvent.ACTION_DOWN) {
                OurSoundPlayer.playSound(this, OurSoundPlayer.S1,0);
                tvOut.setText("тач 1"); }     
            if (action == MotionEvent.ACTION_UP) {
                tvOut.setText("отжато 1");  }
            break;
        case R.id.ImageButton02: 
            if (action == MotionEvent.ACTION_DOWN) {
                OurSoundPlayer.playSound(this, OurSoundPlayer.S2,0);
                tvOut.setText("тач 2"); }     
            if (action == MotionEvent.ACTION_UP) {
                tvOut.setText("отжато 2");  }
            break;
        case R.id.ImageButton03:
            if (action == MotionEvent.ACTION_DOWN) {
                OurSoundPlayer.playSound(this, OurSoundPlayer.S1,0);
                tvOut.setText("тач 3"); }     
            if (action == MotionEvent.ACTION_UP) {
                tvOut.setText("отжато 3");  }
            break;
        case R.id.ImageButton04: 
            if (action == MotionEvent.ACTION_DOWN) {
                OurSoundPlayer.playSound(this, OurSoundPlayer.S3,0);
            tvOut.setText("тач 4"); }     
            if (action == MotionEvent.ACTION_UP) {
            tvOut.setText("отжато 4");  }
            break;
    }
        return true;
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KypcPerm
 Аватар для KypcPerm
5 / 5 / 0
Регистрация: 23.03.2013
Сообщений: 37
23.03.2013, 11:31     Работа с кнопками #2
Попробуй это сделать по координатам. Ты же знаешь координаты imageview и его размеры. С помощью event.GetX и event.GetY получаешь координаты касания, и при совпадении координат касания и кнопки - считай ACTION_DOWN, если координаты перестали совпадать значит ACTION_UP.
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
24.03.2013, 16:00  [ТС]     Работа с кнопками #3
А как узнать точные координаты ImageButton ?
Тут только отступы написаны:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    <ImageButton
        android:id="@+id/ImageButton04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ImageButton03"
        android:layout_marginTop="20dp"
        android:background="@null"
        android:src="@drawable/right_hand_botton" />
 
    <ImageButton
        android:id="@+id/ImageButton02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ImageButton01"
        android:layout_marginTop="20dp"
        android:background="@null"
        android:onClick="ButtonClick2"
        android:src="@drawable/right_hand_botton" />
 
    <ImageButton
        android:id="@+id/ImageButton03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/ImageButton02"
        android:layout_marginTop="20dp"
        android:background="@null"
        android:longClickable="true"
        android:onClick="ButtonClick3"
        android:src="@drawable/right_hand_botton" />
 
    <ImageButton
        android:id="@+id/ImageButton01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@null"
        android:onClick="ButtonClick1"
        android:src="@drawable/right_hand_botton" />

А размер картинок 75x75 px
c4sp3r
0x5B4C322291BD52AE
 Аватар для c4sp3r
91 / 91 / 5
Регистрация: 04.03.2013
Сообщений: 295
24.03.2013, 17:49     Работа с кнопками #4
Т_Ё_М_А,

Попробуй использовать событие onFling()
http://developer.android.com/trainin.../detector.html
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
24.03.2013, 18:18  [ТС]     Работа с кнопками #5
c4sp3r, И чем onFling() мне поможет? Мне же не важна скорость перемещения..
Мне бы область ImageButtonа определить...

Добавлено через 34 секунды
Чтобы сделать, как посоветовал KypcPerm.
KypcPerm
 Аватар для KypcPerm
5 / 5 / 0
Регистрация: 23.03.2013
Сообщений: 37
25.03.2013, 08:11     Работа с кнопками #6
По-моему должны быть методы GetLeft b GetTop, c помощью которых мы можем получить месторасположение объекта.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.03.2013, 12:44     Работа с кнопками #7
вроде в таком случае екшены ловит тот контрол, на который ты нажал, а когда ведешь пальцем это ACTION_MOVE.
сделай чтобы кнопки не ловили екшены, а только чтобы их родительский лаяут ловил и проверяй попадает ли палец в пределы кнопки.
Java
1
2
3
4
button.getHitRect(outRect); 
if(outRect.contains(x,y){
...
}
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
26.03.2013, 15:12  [ТС]     Работа с кнопками #8
Цитата Сообщение от V0v1k Посмотреть сообщение
вроде в таком случае екшены ловит тот контрол, на который ты нажал, а когда ведешь пальцем это ACTION_MOVE.
Да, если нажать на кнопку1 и провести пальцем по остальным и отжать, то сработает ACTION_UP кнопки1.

Цитата Сообщение от V0v1k Посмотреть сообщение
сделай чтобы кнопки не ловили екшены, а только чтобы их родительский лаяут ловил и проверяй попадает ли палец в пределы кнопки.
как задать пределы круглой кнопки? должен же быть какой-то специальный метод... а если кнопка произвольной формы..или с дырками.. Область описать не выйдет одними координатами ОХ и ОУ.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 15:24     Работа с кнопками #9
забейте на форму, девайсы и так маленькие, пусть вся область ловит екшен хоть там и дырка или срезанные углы, для пользователя будет удобнее.
Pahanuch
 Аватар для Pahanuch
324 / 159 / 13
Регистрация: 03.11.2010
Сообщений: 923
26.03.2013, 15:56     Работа с кнопками #10
V0v1k нельзя задать как-то с помощью х,у и радиуса? Может быть есть какой-то getHitCircle)?
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 16:05     Работа с кнопками #11
вьюшки прямоугольны (других не встречал) какой бы вы им не задали внешний вид.
все наоборот увеличивают область хендлинга для удобства пользователя, а вы хотите уменьшить...
Pahanuch
 Аватар для Pahanuch
324 / 159 / 13
Регистрация: 03.11.2010
Сообщений: 923
26.03.2013, 16:31     Работа с кнопками #12
так ImageView или ImageButton?
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
26.03.2013, 16:33  [ТС]     Работа с кнопками #13
ImageButton
Вот
Кликните здесь для просмотра всего текста

Просто если их можно создать круглые, то как и работать с ними как-то, должно быть, можно...
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 16:41     Работа с кнопками #14
это рисунок круглый а не View.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 09:31     Работа с кнопками
Еще ссылки по теме:

Android Как сделать панель с кнопками внизу, которую можно проматывать
Как увеличить всю страницу пальцами, вместе с кнопками текстом и изображениями? Android
Прокручивание экрана с кнопками Android
При вставке в FrameLayout низ скрывается за кнопками Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
KypcPerm
 Аватар для KypcPerm
5 / 5 / 0
Регистрация: 23.03.2013
Сообщений: 37
29.03.2013, 09:31     Работа с кнопками #15
Проблем с круглой кнопкой нет. Для этого есть формула (x-x0)^2+(y-y0)^2<=R^2, где x0 и y0 - центры окружности, а R радиус окружности, если это условие выполняется, то палец находиться внутри круга.
Yandex
Объявления
29.03.2013, 09:31     Работа с кнопками
Ответ Создать тему
Опции темы

Текущее время: 20:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru