Форум программистов, компьютерный форум 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
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
19.03.2015, 11:13  [ТС]     Сделать так, что бы прикосновения фиксировались только в определенной зоне
Цитата Сообщение от Паблито Посмотреть сообщение
после получения onTouch а передавал событие дальше - дочерним вьюшкам
вот именно это и необходимо

Добавлено через 11 минут
вот код рабочей кастомной вьюхи если кому для эксперимента над:
Кликните здесь для просмотра всего текста
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
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 mPaint;
 
    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);
 
    }
 
    @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);
    }
 
    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);
        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;
    }
}

в обычный helloworld вставляется просто в xml:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
<*.*.*.DrawingView
        android:id="@+id/DrawingView"
        android:layout_width="200dp"
        android:layout_height="150dp">
 
Текущее время: 02:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru