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

Разработка собственных компонентов GUI - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
26.03.2013, 15:06     Разработка собственных компонентов GUI #1
Здравствуйте!
Разрабатываем математическую программу, к сожалению, использование стандартных элементов не подходит... Поэтому необходимо реализовать 2D движок, с помощью которого бы можно было на канве создавать динамически элементы управления, перемещать их, осуществлять некоторые события и прочее, возник вопрос с полем ввода.
Как можно реализовать компонент поле ввода, т.е. аналог обычного EditText только, чтобы его можно было отрисовать в любой позиции на канве и собственно осуществлять ввод? Или же как-то можно добавлять на канву стандарные компоненты и обрабатывать их события?

Заранее спасибо за ответ!

Добавлено через 7 минут
P.S.: Под фразой добавлять на канву стандартные элементы я имею в виду делать абсолютную привязку элементов к точка на канве, элементы могут храниться в другом контейнере поверх канвы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 15:30     Разработка собственных компонентов GUI #2
вьюшки можно размещать в любом месте дисплея.

Добавлено через 3 минуты
и на канве можно рисовать в любом месте.
и уже существующие view можно рисовать на канве.
и можно екстенднуть view и дорисовать что нужно или самому рисовать.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
26.03.2013, 15:46  [ТС]     Разработка собственных компонентов GUI #3
Я и спрашиваю, как это осуществить? Нужно создать некий лист, просто белый лист, который может быть значительно больше экрана устройства и который можно скроллить и масштабировать, а на него уже добавить элементы, которые естественно должны уменьшать и перемещаться вместе с этим листом

Добавлено через 3 минуты
В принципе, Вы бы очень помогли, если бы объяснили мне, как создать какой-то компонент динамически и потом просто, отрендрить его в спрайт на канву в том виде, в котором он бы отображался на экране
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 15:51     Разработка собственных компонентов GUI #4
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
class MyView extends View{
 
        public MyView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // TODO Auto-generated constructor stub
        }
 
        public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
        }
 
        public MyView(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
        }
 
        @Override
        protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            
            //рисуем на канвасе
        }
        
        
    }
Добавлено через 31 секунду
https://www.google.com.ua/search?q=a...hrome&ie=UTF-8
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
26.03.2013, 19:34  [ТС]     Разработка собственных компонентов GUI #5
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
package com.contedevel.engine;
 
import com.contedevel.cdcalculator.R;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
public class Surface extends SurfaceView {
       private SurfaceHolder holder;
 
       //конструктор
       public Surface(Context context) 
       {
             super(context);
             holder = getHolder();
             holder.addCallback(new SurfaceHolder.Callback() 
             {
                    public void surfaceDestroyed(SurfaceHolder holder) 
                    {
                    }
 
                    @Override
                    public void surfaceCreated(SurfaceHolder holder) 
                    {
                           Canvas c = holder.lockCanvas(null);
                           onDraw(c);
                           holder.unlockCanvasAndPost(c);
                    }
 
                    @Override
                    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
                    {
                    }
             });
       }
 
       //Рисуем нашу картинку на черном фоне
       protected void onDraw(Canvas canvas) 
       {
       }
}
Выше пример создания SurfaceView. Как мне сделать, чтобы, к примеру, созданная Button рендрилась в Canvas c? Т.е. это должна быть обычная кнопка, просто в качестве канвы использовать c....
Надеюсь правильно сформулировал вопрос...
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 19:37     Разработка собственных компонентов GUI #6
button.draw(c);
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
26.03.2013, 19:40  [ТС]     Разработка собственных компонентов GUI #7
Я пробовал, но ничего не произошло, хотя картинка, которую я также создал отрендрилась. Можете код написать с отрисовкой кнопки, может я инициализировал неправильно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 20:13     Разработка собственных компонентов GUI
Еще ссылки по теме:

Android Обновление GUI с высокой частотой
Видимость компонентов Android
Android Отключение GUI в Android
Android C# оптимизация приложения под разные экраны(не GUI)
Различия View-компонентов Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.03.2013, 20:13     Разработка собственных компонентов GUI #8
Цитата Сообщение от contedevel Посмотреть сообщение
Можете код написать с отрисовкой кнопки
не понял.

Цитата Сообщение от contedevel Посмотреть сообщение
может я инициализировал неправильно?
может.

Добавлено через 10 минут
button.layout(0, 0, 200, 50);
button.draw(c);
Yandex
Объявления
26.03.2013, 20:13     Разработка собственных компонентов GUI
Ответ Создать тему
Опции темы

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