Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
androbro
336 / 297 / 64
Регистрация: 17.10.2014
Сообщений: 873
#1

Сделать так, что бы прикосновения фиксировались только в определенной зоне - Программирование Android

18.03.2015, 13:27. Просмотров 546. Ответов 18
Метки нет (Все метки)

Здравствуйте товарищи!

Есть layout на котором размещена кастомная вьюха(рисовалка) и несколько кнопок.
На данный момент если попытаться нарисовать что то на ней когда рука касается(лежит на) дисплея естественно не получится.

Возможно ли сделать так, что бы прикосновения экрана фиксировалось только в определенной зоне(собственно только на рисовалке, ну и кнопках), как на рисунке:
Сделать так, что бы прикосновения фиксировались только в определенной зоне

Что бы фокус имели только рисовалка и кнопки, а так сказать background не имел, если можно так выразится.

Может кто сталкивался и поделится соображениями по этому поводу.
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2015, 13:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать так, что бы прикосновения фиксировались только в определенной зоне (Программирование Android):

Сделать так, что бы форма отвечала на нажатие мыши только в определенной области - C#
В общем как сделать так, что бы форма отвечала на нажатие мыши только в определенной области. В другом месте её как бы нет, но она есть, и...

Сделать так что бы в файл записывались только отличники - C++
Ребят, программа рабочая, не могу только сделать так что бы в файл записывались только отличники, помогите #include "stdafx.h" #include...

Сделать так, что бы работали только определенные флешки - Ubuntu Linux
И как это сделать на линуксе?

Как сделать так что бы работали только определенные флешки - Администрирование Windows
У нас разношерстный парк операционок от XP до 10ки, домена нет. Слышал, что это можно сделать на касперском, но у нас 360. Да и вообще...

Как сделать так что бы мои шрифты отображались не только у меня? - Delphi
Дело в том что у меня все нормально отображается, а друга крякозябры. А если я вошью шрифты то будут ли нормально они отображается у всех?

Как сделать так, что б в коде использовалось только две переменных? - Pascal ABC
Естьготовый код: var a,b,s,r,d,c:real; begin write('a= '); readln(a); if a=0 then begin writeln('wrong symbol,try again');...

18
androbro
336 / 297 / 64
Регистрация: 17.10.2014
Сообщений: 873
30.03.2015, 12:59  [ТС] #16
upp
0
Spelcrawler
528 / 498 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
30.03.2015, 13:04 #17
androbro, дак оно еще не заработало?)
Цитата Сообщение от androbro Посмотреть сообщение
в реализации вью нужен onTouchEvent, а если повесить на экземпляр DrawingView то что это даст.
Можно же в конструкторе повесить листенер обычным способом, не совсем хорошо конечно, но может будет работать как нужно?
0
androbro
336 / 297 / 64
Регистрация: 17.10.2014
Сообщений: 873
30.03.2015, 13:19  [ТС] #18
Spelcrawler,
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Можно же в конструкторе повесить листенер обычным способом, не совсем хорошо конечно, но может будет работать как нужно?
сделал так:
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
    public DrawingView(Context c, AttributeSet attrs) {
        super(c, attrs);
        context = c;
        mPath = new Path();
        mBitmapPaint = new Paint(Paint.DITHER_FLAG);
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.BLUE);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.MITER);
        mPaint.setStrokeWidth(4f);
        this.setOnTouchListener(new OnTouchListener(){
            @Override
            public boolean onTouch(View arg0, MotionEvent event) {
 
                    float x = event.getX();
                    float y = event.getY();
 
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        touch_start(x, y);
                        invalidate();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        touch_move(x, y);
                        invalidate();
                        break;
                    case MotionEvent.ACTION_UP:
                        touch_up();
                        invalidate();
                        break;
                    }
                    return true;
                }
            
        });
    }
работает аналогичным образом
0
androbro
336 / 297 / 64
Регистрация: 17.10.2014
Сообщений: 873
09.04.2015, 12:33  [ТС] #19
Ну собственно говоря вернулся как то к этой теме на досуге, после одного наблюдения - "если нажать на кнопку и удерживать ее нажатой, то есть возможность в это время нажать и на другую кнопку", это и натолкнуло меня на этот велосипед - а почему бы не зафигачить батон на всю разметку а поверх него уже наложить рисовалку
Сделать так, что бы прикосновения фиксировались только в определенной зоне
собственно ставим у фонового батона альфа = 0 и желаемое поведение достигнуто))профит на двух колесиках)))

теперь дело осталось за малым, так как люди в основном правши, а функциональные кнопки по умолчанию справа, то есть большая вероятность что юзер будет жимкать своей рукой нечаянно по ним...тут либо их надо вообще скрыть, либо перенести на левую сторону(да простят меня левши)
0
09.04.2015, 12:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2015, 12:33
Привет! Вот еще темы с ответами:

Как сделать так что бы код выполнялся только при нажатии (удерживании кнопки)? - Visual Basic .NET
Как сделать так что бы код выполнялся только при нажатии (удерживании кнопки)? то есть нажал я на кнопку а в Picturebox появилась...

Сделать так что бы на событие mouseEnter реагировал только canvas, но не реагировали находящиеся в нем компонеты - C# WPF
вдруг <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.MouseEnter"> ...

Как сделать так что бы добавлял ту же структуру но только пустые поля для ввода новых параметров? - jQuery
Приветствую! Пожалуйста посоветуйте или помогите решить возможно легкий вопрос: Мало что знаю о JQ нашел вот такой код: ...

Никак не могу сделать так что б в строке сканировалось только одно слово,а не сразу вся фраза - C#
Добрый день,я новичек в написании программ,нужен совет. Хочу написать програмку что-то вроде вопрос\ответ. Никак не могу сделать так что...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru