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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Управление фрагментом из активити http://www.cyberforum.ru/android-dev/thread1398036.html
Добрый день! Имею несколько фрагментов, в которых выполняются некоторые действия, то итогу которых формируется результат. Фрагменты выводятся в одной активити в framelayout. На активити также есть...
Программирование Android Как отслеживать изменения нескольких NumberPicker одновременно? Необходимо отслеживать изменение нескольких NumberPicker одновременно. Всё перерыл, но нашёл способ только под один NumberPicker через .setOnValueChangedListener Подскажите, пожалуйста, есть ли... http://www.cyberforum.ru/android-dev/thread1397923.html
Отображение кнопки меню на всех устройствах Программирование Android
Как сделать так, что бы на всех устройствах кнопка меню отображалась справа вверху всегда? На некоторых устройствах есть "реальные" кнопки меню, и в этом случае эта кнопка не отображается.
Создание приложения "Кулинарный справочник" Программирование Android
Здравствуйте киберфорумчане! Нужно создать приложение на подобии кулинарного справочника (менюшка и н-тое кол-во глав), но у меня возникли проблемы технического плана - слабый нетбук не тянет таких...
Программирование Android Как правильно составить GET запрос для получения списка сообщений? http://www.cyberforum.ru/android-dev/thread1397744.html
Перерыл инет, много чего перечитал, но только больше запутался. В общем есть задача Для аутентификации необходимо передать заголовок с именем Authorization, пример: Authorization: Bearer...
Программирование Android Не могу запустить AVD с API 21 Привет. Не могу запустить эмулятор с АПИ уровня 21. Эмулятор запускается и даже грузится, а потом просто закрывается. Пробовал увеличивать RAM, не помогло. Моя ОС: Ubuntu 14.04. подробнее

Показать сообщение отдельно
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
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.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru