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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Управление фрагментом из активити http://www.cyberforum.ru/android-dev/thread1398036.html
Добрый день! Имею несколько фрагментов, в которых выполняются некоторые действия, то итогу которых формируется результат. Фрагменты выводятся в одной активити в framelayout. На активити также есть кнопка, по нажатию на которою, хочу, чтобы результат действий в фрагменте записывался в БД. Сейчас у меня смена фрагментов происходит так: public void selectItemTest(Test test){ ...
Android Как отслеживать изменения нескольких NumberPicker одновременно? Необходимо отслеживать изменение нескольких NumberPicker одновременно. Всё перерыл, но нашёл способ только под один NumberPicker через .setOnValueChangedListener Подскажите, пожалуйста, есть ли способ это сделать? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); kolA4 =... http://www.cyberforum.ru/android-dev/thread1397923.html
Отображение кнопки меню на всех устройствах Android
Как сделать так, что бы на всех устройствах кнопка меню отображалась справа вверху всегда? На некоторых устройствах есть "реальные" кнопки меню, и в этом случае эта кнопка не отображается.
Создание приложения "Кулинарный справочник" Android
Здравствуйте киберфорумчане! Нужно создать приложение на подобии кулинарного справочника (менюшка и н-тое кол-во глав), но у меня возникли проблемы технического плана - слабый нетбук не тянет таких программ как Еклипс, Идея, АС... т.к. возможности сменить девайс на более мощный пока нет, решил попробовать онлайн-конструкторы, но ничего толкового не нашел - практически у всех помесячная оплата за...
Android Как правильно составить GET запрос для получения списка сообщений? http://www.cyberforum.ru/android-dev/thread1397744.html
Перерыл инет, много чего перечитал, но только больше запутался. В общем есть задача Для аутентификации необходимо передать заголовок с именем Authorization, пример: Authorization: Bearer 1a1a1a1a1a1a1a1a1a1a1a1a1a1 API работает в формате JSON. Адрес хоста: http://example.ru
Android Не могу запустить AVD с API 21 Привет. Не могу запустить эмулятор с АПИ уровня 21. Эмулятор запускается и даже грузится, а потом просто закрывается. Пробовал увеличивать RAM, не помогло. Моя ОС: Ubuntu 14.04. подробнее

Показать сообщение отдельно
androbro
318 / 278 / 54
Регистрация: 17.10.2014
Сообщений: 825
19.03.2015, 10:36  [ТС]     Сделать так, что бы прикосновения фиксировались только в определенной зоне
я по всей видимости чего то не понимаю, вот самопальная вьюха(смысловой нагрузки не несет - самая простая рисовалка):
Кликните здесь для просмотра всего текста
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
    public class DrawingView extends View {
 
        public int width;
        public int height;
        private Bitmap mBitmap;
        private Canvas mCanvas;
        private Path mPath;
        private Paint mBitmapPaint;
        Context context;
        private Paint circlePaint;
        private Path circlePath;
 
        public DrawingView(Context c) {
            super(c);
            context = c;
            mPath = new Path();
            mBitmapPaint = new Paint(Paint.DITHER_FLAG);
            circlePaint = new Paint();
            circlePath = new Path();
            circlePaint.setAntiAlias(true);
            circlePaint.setColor(Color.BLUE);
            circlePaint.setStyle(Paint.Style.STROKE);
            circlePaint.setStrokeJoin(Paint.Join.MITER);
            circlePaint.setStrokeWidth(4f);
 
        }
 
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w, h, oldw, oldh);
 
            mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);
 
        }
 
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
 
            canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
            canvas.drawPath(mPath, mPaint);
            canvas.drawPath(circlePath, circlePaint);
        }
 
        private float mX, mY;
        private static final float TOUCH_TOLERANCE = 1;
 
        private void touch_start(float x, float y) {
            mPath.reset();
            mPath.moveTo(x, y);
            mX = x;
            mY = y;
        }
 
        private void touch_move(float x, float y) {
            float dx = Math.abs(x - mX);
            float dy = Math.abs(y - mY);
            if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
                mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
                mX = x;
                mY = y;
            }
        }
 
        private void touch_up() {
            mPath.lineTo(mX, mY);
            circlePath.reset();
            mCanvas.drawPath(mPath, mPaint);
            mPath.reset();
        }
 
        @Override
        public boolean onTouchEvent(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;
        }

Допустим размещается она на лейауте и занимает половину экрана. Пользователь планшета может положить руку на область не занимаемую DrawingView и начать рисовать, но onTouchEvent в DrawingView не отрабатывает, так как фокус(или как он там называется) щас находится за пределами DrawingView.
 
Текущее время: 06:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru