Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
nftpro
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
胡尚
nftpro
Commits
42c71aae
提交
42c71aae
authored
5月 09, 2023
作者:
cbd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、布局中使用GlSufaceView支持触摸缩放。
2、放入ScrowView触摸冲突处理。
上级
e891180d
全部展开
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
63 行增加
和
5 行删除
+63
-5
ModelRenderer.java
.../the3deer/android_3d_model_engine/view/ModelRenderer.java
+29
-3
ModelSurfaceView.java
...e3deer/android_3d_model_engine/view/ModelSurfaceView.java
+34
-2
ModelActivity.java
widget/src/main/java/com/orange/widget/ui/ModelActivity.java
+0
-0
没有找到文件。
engine/src/main/java/org/the3deer/android_3d_model_engine/view/ModelRenderer.java
浏览文件 @
42c71aae
...
...
@@ -52,8 +52,8 @@ public class ModelRenderer implements GLSurfaceView.Renderer {
// Add 0.5f to the alpha component to the global shader so we can see through the skin
private
static
final
float
[]
BLENDING_MASK_FORCED
=
{
1.0f
,
1.0f
,
1.0f
,
0.5f
};
private
final
float
[]
backgroundColor
;
private
final
SceneLoader
scene
;
float
[]
backgroundColor
;
SceneLoader
scene
;
private
final
List
<
EventListener
>
listeners
=
new
ArrayList
<>();
...
...
@@ -70,7 +70,7 @@ public class ModelRenderer implements GLSurfaceView.Renderer {
/**
* Drawer factory to get right renderer/shader based on object attributes
*/
private
final
RendererFactory
drawer
;
private
RendererFactory
drawer
;
// frames per second
private
long
framesPerSecondTime
=
-
1
;
...
...
@@ -197,6 +197,27 @@ public class ModelRenderer implements GLSurfaceView.Renderer {
}
}
public
ModelRenderer
(
Activity
parent
,
ModelSurfaceView
modelSurfaceView
){
this
.
main
=
modelSurfaceView
;
try
{
this
.
drawer
=
new
RendererFactory
(
parent
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
doShadowing
)
{
try
{
this
.
shadowsRenderer
=
new
ShadowsRenderer
(
parent
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
}
}
public
ModelRenderer
addListener
(
EventListener
listener
)
{
this
.
listeners
.
add
(
listener
);
return
this
;
...
...
@@ -973,4 +994,8 @@ public class ModelRenderer implements GLSurfaceView.Renderer {
public
void
setOrientation
(
Quaternion
orientation
)
{
this
.
orientation
=
orientation
;
}
public
void
setScene
(
SceneLoader
scene
)
{
this
.
scene
=
scene
;
}
}
\ No newline at end of file
engine/src/main/java/org/the3deer/android_3d_model_engine/view/ModelSurfaceView.java
浏览文件 @
42c71aae
...
...
@@ -15,6 +15,7 @@ import org.the3deer.util.android.AndroidUtils;
import
org.the3deer.util.event.EventListener
;
import
org.the3deer.util.math.Quaternion
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.EventObject
;
import
java.util.List
;
...
...
@@ -28,8 +29,10 @@ import java.util.List;
public
class
ModelSurfaceView
extends
GLSurfaceView
implements
EventListener
{
private
ModelRenderer
mRenderer
;
private
float
[]
backgroundColor
=
new
float
[]{
0.0f
,
0.5f
,
0.0f
,
1.0f
};
SceneLoader
scene
;
private
final
List
<
EventListener
>
listeners
=
new
ArrayList
<>();
private
boolean
canTouch
=
false
;
public
ModelSurfaceView
(
Activity
parent
,
float
[]
backgroundColor
,
SceneLoader
scene
){
super
(
parent
);
...
...
@@ -51,10 +54,13 @@ public class ModelSurfaceView extends GLSurfaceView implements EventListener {
}
public
ModelSurfaceView
(
Context
context
,
AttributeSet
attrs
)
{
public
ModelSurfaceView
(
Context
context
,
AttributeSet
attrs
)
throws
IOException
,
IllegalAccessException
{
super
(
context
,
attrs
);
Log
.
i
(
"ModelSurfaceView"
,
"Loading [OpenGL 2] ModelSurfaceView..........."
);
setEGLContextClientVersion
(
2
);
mRenderer
=
new
ModelRenderer
((
Activity
)
context
,
this
);
mRenderer
.
addListener
(
this
);
setRenderer
(
mRenderer
);
}
public
void
addListener
(
EventListener
listener
){
...
...
@@ -69,9 +75,20 @@ public class ModelSurfaceView extends GLSurfaceView implements EventListener {
return
mRenderer
.
getViewMatrix
();
}
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
// propagate event to responsible...
//NestedScrollView嵌套ModelSurfaceView,ModelSurfaceView触摸事件冲突
if
(
canTouch
){
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_DOWN
){
getParent
().
requestDisallowInterceptTouchEvent
(
true
);
}
if
(
event
.
getAction
()
==
MotionEvent
.
ACTION_MOVE
){
//通知他的父View NestedScrollView现在进行的是本控件的操作,不要对我的操作进行干扰
getParent
().
requestDisallowInterceptTouchEvent
(
true
);
}
}
AndroidUtils
.
fireEvent
(
listeners
,
new
EventObject
(
event
));
return
true
;
}
...
...
@@ -87,6 +104,19 @@ public class ModelSurfaceView extends GLSurfaceView implements EventListener {
return
true
;
}
public
void
setCanTouch
(
boolean
canTouch
)
{
this
.
canTouch
=
canTouch
;
}
public
void
setBackgroundColor
(
float
[]
backgroundColor
)
{
mRenderer
.
backgroundColor
=
backgroundColor
;
}
public
void
setScene
(
SceneLoader
scene
)
{
mRenderer
.
scene
=
scene
;
}
public
void
toggleProjection
()
{
Log
.
i
(
"ModelSurfaceView"
,
"Toggling projection..."
);
mRenderer
.
toggleProjection
();
...
...
@@ -148,4 +178,6 @@ public class ModelSurfaceView extends GLSurfaceView implements EventListener {
public
void
setOrientation
(
Quaternion
orientation
)
{
mRenderer
.
setOrientation
(
orientation
);
}
}
widget/src/main/java/com/orange/widget/ui/ModelActivity.java
浏览文件 @
42c71aae
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论