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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
#1

OpenGL внутни layout - Программирование Android

11.03.2013, 17:31. Просмотров 1215. Ответов 14
Метки нет (Все метки)

Необходимо что бы OpenGL не весь экран, а только часть.
В качестве примера OpenGL взял приложение- треугольник (см прикрепленные файлы - Пример 1)
Где вместо
Java
1
etContentView(type glsurfaceView);
заменил на
Java
1
2
3
4
5
6
7
8
  setContentView(R.layout.main);
        LinearLayout ll2 =(LinearLayout) findViewById(R.id.ll2);  
        GLSurfaceView s = new GLSurfaceView(this);
        s.setRenderer((Renderer) mGLView);
        //to add the view with your own parameters
        ll2.addView(s, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        //or simply use
        ll2.addView(s,0);
(см прикрепленные файлы - Пример Изменения )

В результате получил следующие ошибки.

Кликните здесь для просмотра всего текста
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.opengl/com.example.android.opengl.OpenGLES20Basic}: java.lang.ClassCastException: com.example.android.opengl.MyGLSurfaceView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: com.example.android.opengl.MyGLSurfaceView
at com.example.android.opengl.OpenGLES20Basic.onCreate(OpenGLES20Basic.java:40)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
... 11 more


Причиной данных ошибок служит строка .setRenderer((Renderer) mGLView);, но как можно обойтись без нее?
Вложения
Тип файла: zip пример изменения.zip (59.3 Кб, 11 просмотров)
Тип файла: zip Пример.zip (13.4 Кб, 12 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 17:31     OpenGL внутни layout
Посмотрите здесь:

Квадратный Layout - Программирование Android
Как создать в XML разметке КВАДРАТНЫЙ layout, вычисление размеров можно задать алгоритмом: ставим height и width == match_parent, если...

TextViews и Layout - Программирование Android
Здравствуйте! Имеется много генерируемых TextView. Как их можно поставить друг за дугом, что бы получился текст, как в обчной статье? ...

layout 9 inch - Программирование Android
Всем привет. Делаю аппликацию для таблета. изначально делал ее на 7 инч. а теперь появилась потребность совместимости с 9 инчевыми...

Имя layout - Программирование Android
У меня одна Activity использует несколько layout. т.е., чтобы поменять страницу, я не меняю активити, а делаю что-то вроде ...

Авторазмер в Layout - Программирование Android
Добрый вечер. Столкнулся с проблемой. Необходимо что б был авторазмер для лайаута. В зависимости от размера экрана он сам подгоняет...

переходы layout - Программирование Android
У меня подключен такой инклюдик <include layout="@layout/content_main" /> Я показываю там layout, но как мне кодом показать...

Drawer Layout - Программирование Android
Имеется Drawer Layout со списком меню. Каждое меню кликабельно и меняет Fragment-ы. При нажатии на пункт списка выполняется метод: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.03.2013, 18:06     OpenGL внутни layout #2
ну, видимо mGLView не Renderer.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
11.03.2013, 18:42     OpenGL внутни layout #3
GLSurfaceView is just one way to incorporate OpenGL ES graphics into your application. For a full-screen or near-full screen graphics view, it is a reasonable choice. Developers who want to incorporate OpenGL ES graphics in a small portion of their layouts should take a look at TextureView. For real, do-it-yourself developers, it is also possible to build up an OpenGL ES view using SurfaceView, but this requires writing quite a bit of additional code.

http://developer.android.com/trainin...vironment.html
Может все таки тебе стоит использовать TextureView.
Так как если используешь GLSurfaceView то для его инициализации ты должен зарегать класс который отвечает за рендеринг.

Java
1
setRenderer(GLSurfaceView.Renderer)
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
12.03.2013, 14:52  [ТС]     OpenGL внутни layout #4
Так как если используешь GLSurfaceView то для его инициализации ты должен зарегать класс который отвечает за рендеринг.
Java
1
setRenderer(GLSurfaceView.Renderer)
ошибка
GLSurfaceView.Renderer cannot be resolved to a variable
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 15:06     OpenGL внутни layout #5
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
setRenderernew (new GLSurfaceView.Renderer() {
                
                @Override
                public void onSurfaceCreated(GL10 gl, EGLConfig config) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onSurfaceChanged(GL10 gl, int width, int height) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onDrawFrame(GL10 gl) {
                    // TODO Auto-generated method stub
                }
            });
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
12.03.2013, 17:05  [ТС]     OpenGL внутни layout #6
Предлагает создать метод setRenderernew.
Что писать в нем?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 17:51     OpenGL внутни layout #7
блин, да опечатка это, не нужно все так бездумно копировать...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
setRenderer(new GLSurfaceView.Renderer() {
                
                @Override
                public void onSurfaceCreated(GL10 gl, EGLConfig config) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onSurfaceChanged(GL10 gl, int width, int height) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onDrawFrame(GL10 gl) {
                    // TODO Auto-generated method stub
                }
            });
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
12.03.2013, 18:49  [ТС]     OpenGL внутни layout #8
Сделал по вашему примеру(по факту получился такой же рендер как и при варианте
Java
1
  s.setRenderer((Renderer) mGLView);
)
и практически такой же список ошибок
Кликните здесь для просмотра всего текста
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.opengl/com.example.android.opengl.OpenGLES20Basic}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:2062)
at android.view.ViewGroup.addView(ViewGroup.java:1957)
at android.view.ViewGroup.addView(ViewGroup.java:1914)
at com.example.android.opengl.OpenGLES20Basic.onCreate(OpenGLES20Basic.java:77)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
... 11 more

Почему не работает вот такой вариант
Java
1
2
3
4
5
6
  setContentView(R.layout.main);
        mGLView = new MyGLSurfaceView(this);
       // setContentView(mGLView);
        SurfaceView s = (SurfaceView)findViewById(R.id.surfaceView1);
        s =(SurfaceView)mGLView;
        s.refreshDrawableState();
При запуске не отрисовываются элементы в SurfaceView

Добавлено через 23 минуты
Проект с ошибками git://git.assembla.com/opengles20basic.git
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
12.03.2013, 18:54     OpenGL внутни layout #9
Цитата Сообщение от nikooolay Посмотреть сообщение
ошибка
Не думал что ты тупо копипэйст сделаешь
Я намекал тебе, что надо реализовать интерфейс GLSurfaceView.Renderer!

Может еще рано за OpenGL браться?

Добавлено через 1 минуту
Цитата Сообщение от nikooolay Посмотреть сообщение
Проект с ошибками git://git.assembla.com/opengles20basic.git
Вот этот лучше используй в качестве образца
http://developer.android.com/shareab...g/OpenGLES.zip
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.03.2013, 20:20     OpenGL внутни layout #10
Цитата Сообщение от nikooolay Посмотреть сообщение
и практически такой же список ошибок
это называется stack trace и здесь уже совсем другая ошибка в другом участке кода.


Цитата Сообщение от nikooolay Посмотреть сообщение
Почему не работает вот такой вариант
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
* setContentView(R.layout.main);
* * * * mGLView = new MyGLSurfaceView(this);
* * * *// setContentView(mGLView);
* * * * SurfaceView s = (SurfaceView)findViewById(R.id.surfaceView1);
* * * * s =(SurfaceView)mGLView;
* * * * s.refreshDrawableState();
При запуске не отрисовываются элементы в SurfaceView
no comments


Цитата Сообщение от c4sp3r Посмотреть сообщение
Может еще рано за OpenGL браться?
здесь рано за андроид браться, азы программирования учить ему надо.
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
12.03.2013, 21:19  [ТС]     OpenGL внутни layout #11
Цитата Сообщение от c4sp3r Посмотреть сообщение
Не думал что ты тупо копипэйст сделаешь
Я намекал тебе, что надо реализовать интерфейс GLSurfaceView.Renderer!

Может еще рано за OpenGL браться?

Добавлено через 1 минуту
Вот этот лучше используй в качестве образца
http://developer.android.com/shareab...g/OpenGLES.zip
Если мне кто нибудь расскажет каким образом можно плавно поворачивать изображение без OpenGL, которое подтормаживает при поворотах canvasом из-за копирования bitmap, а без копирования (только накладкой матрицы) приходится выбирать между точкой вращения и масштабированием, я откажусь от OpenGL сразу же.
ЗЫ анимация тоже не подходит

Добавлено через 8 минут
+ непосредственно поворот элемента не подходит из-за того что в процессе поворота (кроме 1, смещается центр)
Данный пример и использую.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
12.03.2013, 22:07     OpenGL внутни layout #12
nikooolay, Сорри если не прав но просто судя по твоим ответам складывается мнение что ты даже основ ООП не знаешь. А если так смысла продолжать топик нет!
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
13.03.2013, 01:32  [ТС]     OpenGL внутни layout #13
Цитата Сообщение от c4sp3r Посмотреть сообщение
nikooolay, Сорри если не прав но просто судя по твоим ответам складывается мнение что ты даже основ ООП не знаешь. А если так смысла продолжать топик нет!
Естественно оно будет складываться если уже пару дней толчешься в теме(openGL) в которой абсолютный ноль.
Ну это уже к вопросу о нетипичных примерах для самых простых случаев.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
13.03.2013, 10:48     OpenGL внутни layout #14
nikooolay, толи еще будет ты еще до программирования шейдеров не дошел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 11:03     OpenGL внутни layout
Еще ссылки по теме:

Android layout - Программирование Android
Доброго времени суток. Подскажите пожалуйста. Проблема такая, есть Activity с кнопками и т. д., по нажатию на кнопку открывается...

Перерисовка layout - Программирование Android
здравствуйте,может кто сталкивался с такой проблемой имею такой xml <RelativeLayout ...

Очистить layout - Программирование Android
Доброго времени суток! У меня есть очень большая анкета(около 120 EditText и CheckBox). Мне надо реализовать кнопку Очистить. ...

Layout со скроллингом - Программирование Android
нужно в Activity разместить много кнопок одна под одной, НО они все не уместятся на экране и нужно чтобы они прокручивались пальцем вверх и...

Программное создание layout - Программирование Android
Впервые приходится создавать экран полностью через класс. Не могу понять, как должны привязываться компоненты: снизу вверх или сверху вниз?...


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

Или воспользуйтесь поиском по форуму:
nikooolay
8 / 8 / 0
Регистрация: 20.11.2009
Сообщений: 410
13.03.2013, 11:03  [ТС]     OpenGL внутни layout #15
Цитата Сообщение от c4sp3r Посмотреть сообщение
nikooolay, толи еще будет ты еще до программирования шейдеров не дошел
Уже смотрел
Yandex
Объявления
13.03.2013, 11:03     OpenGL внутни layout
Ответ Создать тему
Опции темы

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