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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
evgen-20058
1 / 1 / 0
Регистрация: 20.04.2010
Сообщений: 36
#1

Виртульный склад. использование графики - Android

30.11.2012, 20:57. Просмотров 1280. Ответов 4
Метки нет (Все метки)

Здравствуйте!

Помогите пожалуйста в реализации приложения под Android.
Значит имеется склад, в нем имееются ящики, так же на складе есть работник который двигает эти ящики.
пользователь выступает в качестве наблюдателя.

вот что я уже имею
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
//GameView.java
 
package pinocio.sclad;
 
import android.util.AttributeSet;
import android.view.*;
import android.content.*;
import android.graphics.*;
 
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{
    /**
     * Область рисования
     */
    private SurfaceHolder mSurfaceHolder;
    /**
     * Поток, рисующий в области
     */
    private GameManager mThread;
    
    /**
     * Конструктор
     * @param context
     * @param attrs
     */
    public GameView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
 
        // подписываемся на события Surface
        mSurfaceHolder = getHolder();
        mSurfaceHolder.addCallback(this);
        mThread = new GameManager(mSurfaceHolder, context);
    }
 
    @Override
    /**
     * Изменение области рисования
     */
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
    {
        mThread.initPositions(height, width);
    }
 
    @Override
    /**
     * Создание области рисования
     */
    public void surfaceCreated(SurfaceHolder holder)
    {
        mThread.setRunning(true);
        mThread.start();
    }
 
    @Override
    /**
     * Уничтожение области рисования
     */
    public void surfaceDestroyed(SurfaceHolder holder)
    {
        boolean retry = true;
        mThread.setRunning(false);
        while (retry)
        {
            try
            {
                // ожидание завершение потока
                mThread.join();
                retry = false;
            }
            catch (InterruptedException e) { }
        }
    }
}
и собственно сам класс рисования.

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
//GameManager.java
 
package pinocio.sclad;
 
import android.util.AttributeSet;
import android.view.*;
import android.content.*;
import android.content.res.Resources;
import android.graphics.*;
import android.graphics.Paint.Style;
 
public class GameManager extends Thread
{
    private static final int FIELD_WIDTH = 300;
    private static final int FIELD_HEIGHT = 250;
 
   /** Область, на которой будем рисовать */
    private SurfaceHolder mSurfaceHolder;
 
    /** Состояние потока (выполняется или нет. Нужно, чтобы было удобнее прибивать поток, когда потребуется) */
    private boolean mRunning;
 
    /** Стили рисования */
    private Paint mPaint;
 
    /** Прямоугольник игрового поля */
    private Rect mField;
   
    /** Ресурсы приложения */
    private Resources mRes;
 
    /**
     * Инициализация положения объектов, в соответствии с размерами экрана
     * @param screenHeight Высота экрана
     * @param screenWidth Ширина экрана
     */
    
    public void initPositions(int screenHeight, int screenWidth)
    {
        int left = (screenWidth - FIELD_WIDTH) / 2;
        int top = (screenHeight - FIELD_HEIGHT) / 2;
 
        mField.set(left, top, left + FIELD_WIDTH, top + FIELD_HEIGHT);
    }
 
    /**
     * Конструктор
     * @param surfaceHolder Область рисования
     * @param context Контекст приложения
     */
    public GameManager(SurfaceHolder surfaceHolder, Context context)
    {
        mSurfaceHolder = surfaceHolder;
        mRunning = false;
 
        mPaint = new Paint();
        mPaint.setColor(Color.BLUE);
        mPaint.setStrokeWidth(2);
        mPaint.setStyle(Style.STROKE);
        mField = new Rect();
    }
 
    /**
     * Задание состояния потока
     * @param running
     */
    public void setRunning(boolean running)
    {
        mRunning = running;
    }
 
    @Override
    /** Действия, выполняемые в потоке */
    public void run()
    {
        while (mRunning)
        {
            Canvas canvas = null;
            try
            {
                // подготовка Canvas-а
                canvas = mSurfaceHolder.lockCanvas();
                synchronized (mSurfaceHolder)
                {
                    // собственно рисование
                    canvas.drawRect(mField, mPaint);
                }
            }
            catch (Exception e) { }
            finally
            {
                if (canvas != null)
                {
                    mSurfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}
теперь мне необходимо создать класс для ящика и работника, но я не могу понять как реализовать ихнее перемещение по складу.
а после создания класов их необходимо прорисовать в классе GameManager

Гуру программисты помогите чайнику ))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 20:57     Виртульный склад. использование графики
Посмотрите здесь:

Android Использование Сервисов
Использование ImageView Android
Использование canvas Android
Использование NDK Android
Использование TabHost Android
Android Использование HttpsURLConnection
Android Как рисовать графики на Android?
Использование Authenticator Android
использование thread Android
Android RecyclerView использование ItemDecoration
Использование HttpURLConnection Android
Android Использование Loader

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
03.12.2012, 02:43     Виртульный склад. использование графики #2
http://dajver.blogspot.com/2012/01/a...rfaceview.html

начинай с основ, мои уроки (не спам)
evgen-20058
1 / 1 / 0
Регистрация: 20.04.2010
Сообщений: 36
03.12.2012, 03:02  [ТС]     Виртульный склад. использование графики #3
я посмотрел, очень много чего интересного, возьму на заметку. Спасибо.
только беда в том что по сроком поджимает, времени в том чтобы во всем разобраться очень мало....
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
03.12.2012, 14:39     Виртульный склад. использование графики #4
Цитата Сообщение от evgen-20058 Посмотреть сообщение
я посмотрел, очень много чего интересного, возьму на заметку. Спасибо.
только беда в том что по сроком поджимает, времени в том чтобы во всем разобраться очень мало....
тогда кинь сюда исходники, я посмотрю что можно сделать
evgen-20058
1 / 1 / 0
Регистрация: 20.04.2010
Сообщений: 36
03.12.2012, 15:38  [ТС]     Виртульный склад. использование графики #5
Буду очень признателен.
Вложения
Тип файла: rar sclad.rar (790.1 Кб, 24 просмотров)
Yandex
Объявления
03.12.2012, 15:38     Виртульный склад. использование графики
Ответ Создать тему
Опции темы

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