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

Как толкнуть одной фигурой другую в методе onDraw - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как сделать LinearLayout в несколько колонок http://www.cyberforum.ru/android-dev/thread1061669.html
Появился вопрос, как сделать LinearLayout в две или несколько колонок, каждый из них содержит как минимум по одной imageview и textview, вставляются в область активити эти layout'ы с помощью layoutinflater, в цикле, в их количество зависит от полученного ответа от сервера. Явный пример того что я имею ввиду, это приложение PlayMarket, вкладка "Набирающие популярность", там в строку расположено по...
Android SQLite. Жутко тормозит Cursor Выполняю запрос к бд с большими объемами данных, связывая левым соединением несколько таблиц. Выяснил, что запрос выполняется быстро, а тормозит курсор. В выборке может и не быть строк, но первое обращение к курсору (cursor.getCount() или cursor.moveToNext) занимает 900 мсек! В чем причина и что можно сделать? Добавлено через 47 минут А может на самом деле запрос выполняется не в момент... http://www.cyberforum.ru/android-dev/thread1061598.html
Android Как разнести исходной код по разным файлам
Допустим у меня есть java файл активити - очень большой много классов, функций. Как этот код разнести по разным файлам, хотя бы классы, подобно как на с++, создаётся файл функций и заголовочный файл который подключается в основной файл.
Как получить данные из EditText, созданного программно, или как узнать ID элемента? Android
Всем здрасте и с Новым годом! Суть вопроса: Как получить значение, введенное пользователем в EditText, созданного программно или через адаптер? Ведь его ID не известно :( Теперь подробнее: Есть список, состоящий из строк: TextViev - EditText TextViev - EditText TextViev - EditText ...
Android Проверка лицензии http://www.cyberforum.ru/android-dev/thread1061395.html
Есть проверка лицензии приложения, которая запускается так: mChecker.checkAccess(mLicenseCheckerCallback); Обьект mLicenseCheckerCallback служит для возвращение результата проверки лицензии. Вот его класс. В случае удачной проверки лицензии запускаеться метод allow(). Я хочу чтобы этот метод поменял значение TextView. Проверка лицензии, я так понимаю происходит в свое потоке (я ее не...
Android База записей, из которой каждый день нужно брать пару-тройку определенных и показывать на экране Всем доброго времени суток Возникла такая проблема: требуется создать очень простое приложение на Android, но опыта в разработке приложений для мобильных устройств у меня абсолютно никакого. Имеются довольно широкие познания в программировании, схватываю на лету, но на Java и, тем более, под Android ничего не писал. Суть приложения такова: Имеется база записей, из которой каждый день нужно... подробнее

Показать сообщение отдельно
yuraavakyan
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 7
02.01.2014, 22:50  [ТС]     Как толкнуть одной фигурой другую в методе onDraw
Tester64, Извините пожалуйста за дерзость,но я не очень понимаю что такое ООП и с чем его едят,если можно я вышлю вам код он небольшой,а когда у вас будет время разделите его на несколько java a? буду очень признателен в случае согласия;пойму - в случае отказа.

Добавлено через 9 минут
Tester64, Насчет скачков,нет я сделал так что при любом движении вверх фигура движется на 50 по Y или по X это тоже не годиться,я знаю что надо как то определить класс Cell или что-то в этом роде,но не могу,у меня в голове не укладывается как это надо сделать.

Добавлено через 3 минуты
Или давайте вот-так вот java файл в котором у меня написана вся логика.

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 package com.example.paint;
 
 
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.View;
 
@SuppressLint("DrawAllocation")
public class Draw extends View{ 
    
    int manFirstX = 50;
    int manFirstY = 50;
    int manSecondX = 100;
    int manSecondY = 100;
    int targetFirstX = 200;
    int targetFirstY = 200;
    int targetSecondX = 250;
    int targetSecondY = 250;
    float dx = 0;
    float dy = 0;   
    float touchX = 0;
    float touchY = 0;
    
    
    public Draw(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }
    public  boolean onTouchEvent(MotionEvent event){
        
        
        switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:
            touchX = event.getX();
            touchY = event.getY();          
        case MotionEvent.ACTION_UP:
            dx = touchX - event.getX();
            dy = touchY - event.getY();            
        case MotionEvent.ACTION_MOVE:
if(Math.abs(dy) > Math.abs(dx)){ 
                
                if(dy > 0){   //Direction UP   
                    
                    
                    
                    manFirstY = manFirstY - 50;
                    manSecondY = manSecondY - 50;                    
                    if(manFirstY < targetSecondY && manFirstX == targetFirstX){
                        if(manSecondY>=targetSecondY){
                        targetFirstY = targetFirstY - 50;
                        targetSecondY = targetSecondY - 50;
                        }
                        
                    }
                    
                }
 
                else if(dy < 0){    //Direction DOWN                                   
                    manFirstY = manFirstY + 50;
                    manSecondY = manSecondY + 50;                    
                    if(manSecondY > targetFirstY && manFirstX == targetFirstX){    
                        if(manSecondY<=targetSecondY){
                        targetFirstY = targetFirstY + 50;
                        targetSecondY = targetSecondY + 50;
                        }
                    }
   
                }
            }
            else{
                if(dx > 0){     //Direction LEFT                 
                    manFirstX = manFirstX - 50;
                    manSecondX = manSecondX - 50;                  
                    if(manFirstX < targetSecondX && manFirstY == targetFirstY){
                        if(manSecondX>=targetSecondX){
                        targetFirstX = targetFirstX - 50;
                        targetSecondX = targetSecondX - 50;
                        }
                    }
            
                }
                else if(dx < 0){     //Direction RIGHT                    
                    manFirstX = manFirstX + 50;
                    manSecondX = manSecondX + 50;                 
                    if(manSecondX > targetFirstX && manFirstY == targetFirstY){
                        if(manFirstX<=targetFirstX){
                        targetFirstX = targetFirstX +50;
                        targetSecondX = targetSecondX +50;
                        }
                    }   
                }
            }          
    }
        
    return true;
}
 
    @SuppressLint("DrawAllocation")
    public void onDraw(Canvas c){   
        
        Rect man = new Rect();
        
        
        
        
        Rect target = new Rect();
        Rect marginLeft = new Rect();
        Rect marginTop = new Rect();
        Rect marginRight = new Rect();
        Rect marginBottom = new Rect();
        
        marginBottom.set(0,getHeight()-50,getWidth(),getHeight());
        marginRight.set(getWidth()-50,0,getWidth(),getHeight());
        marginTop.set(0,0,getWidth(),50);
        marginLeft.set(0,0,50,getHeight());
        man.set(manFirstX,manFirstY,manSecondX,manSecondY);     
        target.set(targetFirstX,targetFirstY,targetSecondX,targetSecondY);
        Paint p = new Paint();
        p.setStyle(Paint.Style.FILL);
        p.setColor(Color.BLACK);
        c.drawPaint(p);     
        p.setColor(Color.WHITE);
        c.drawRect(man, p);
        p.setColor(Color.GREEN); 
        c.drawRect(target, p);
        c.drawRect(marginLeft,p);
        c.drawRect(marginTop,p);
        c.drawRect(marginRight,p);
        c.drawRect(marginBottom,p);
        
        
        
        invalidate();
        
    
    }
    
    
}
укажите пожалуста на недостатки или советы какие-нибудь.

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