java - ARCORE:点击后视图(信息卡)不出现
问题描述
我是 arcore 的新手,并且正在为一个项目使用场景形式。具体来说,我正在使用太阳系示例并尝试将其包含在Planet.java
我的项目中的信息卡实现。我已经设置了信息卡(至少我认为我这样做了)但是,它们不会出现在水龙头上。我错过了什么还是我做错了什么?预先感谢您的帮助。
private void makeinfoCards(ArFragment arFragment, Anchor anchor, Context context) {
if (infoCard == null) {
AnchorNode anchorNode = new AnchorNode(anchor);
infoCard = new Node();
infoCard.setParent(anchorNode);
infoCard.setEnabled(false);
infoCard.setLocalPosition(new Vector3(0.0f, 2.90f * INFO_CARD_Y_POS_COEFF, 0.0f));
//below would hide/bring up the info card on tap
infoCard.setOnTapListener( //anchorNode.setOnTapListener doesn't make info card appear either
(hitTestResult, motionEvent) -> {
infoCard.setEnabled(!infoCard.isEnabled());
}
);
ViewRenderable.builder()
.setView(arFragment.getContext(), R.layout.card_view) //putting context instead makes no difference
.build()
.thenAccept(
(renderable) -> {
infoCard.setRenderable(renderable);
TextView textView = (TextView) renderable.getView();
textView.setText("random");
})
.exceptionally(
(throwable) -> {
throw new AssertionError("Could not load plane card view.", throwable);
});
}
}
解决方案
实现Node.OnTapListener
接口,然后覆盖 onTap 方法。
当要投影模型时,将模型节点记录在列表中。在这里,我为场景表单上存在的每个节点设置卡片。
@Override
public void onTap(HitTestResult hitTestResult, MotionEvent motionEvent) {
modelDataObj = map.get(hitTestResult.getNode()); // get object againt each node
tvModelName.setText(modelDataObj.getItem_name());
Picasso.get().load(modelDataObj.get_thumbnail()).placeholder(R.drawable.imageplaceholder).into(imgLoadAddInfoImage);
tvTitle.setText(modelDataObj.getItem_name());
tvLoadAddInfoDescText.setText(modelDataObj.getDescription())
}
推荐阅读
- c# - 验证几个字段不重复
- python - 如何“创建环境变量文件:touch .env 进行配置(在项目根目录中)。”
- javascript - 更改登录屏幕的占位符文本
- web-crawler - 列出来自某个域的所有网站
- spring-boot - Spring Boot 应用程序不以 Maven 和空手道开头
- sql - 使用多个聚合函数查找每个组的最后一条记录 - SQLite
- kotlin - ForkJoinPool 和 Kotlin 协程
- sql - 如何通过修改现有查询得到想要的结果?
- azure - 不将 CERT 绑定到 azure 流量管理器(仅在 HTTPS 应用服务之前)主机名是否安全?
- ibm-watson - Watson 自然语言理解