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

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

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

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