android 点击按钮延迟,android – Nutiteq:ViewLabel:延迟按钮执行

通过提到的帖子的回答,我注意到视图的onTouchEvent-Method被调用,并且执行click的对象由处理程序发布到由Choreographer触发的runQueue.

在ViewLabel中按下按钮之后,我发生了上面描述的内部调用,但是在按下ViewLabel之外的某个地方之前,按钮的onClick-Method不会被执行.然后ViewLabel关闭(就像它应该,当按下它后面的地图时)和Toast我放入onClick-Method被触发.

我认为这个问题与UIThread有关.看起来像performClick-Action被放入了错误的runQueue,当用户没有打开Label时,它运行.

如果有人有想法,如何解决这个问题会很好.

编辑:

以下是我构建ViewLabel的方法.此方法位于MapActivity调用的类中:

public void createViewMarker(View markerView, Bitmap icon, MapPos pos, Category cat, String tag) {

MarkerStyle markerStyle = MarkerStyle.builder().setBitmap(icon).setSize(0.5f).setColor(

Color.WHITE).build();

ViewLabel label = new ViewLabel(markerView, new Handler(Looper.getMainLooper()));

label.setTouchHandlingMode(true);

markers.add(new MocaMarker(pos, label, markerStyle, cat,

markerLayer, tag));

}

解决方法:

在谷歌集团的nutiteq团队的回应后,谁也没有解决方案(

see here)我决定完全摆脱ViewLabel.

我现在的解决方案是将准备好的poi视图的布局包含到MapActivity布局文件中,并将其与我的MapListener的自定义实现一起加载.

我在MapListener的构造函数中对poi视图元素进行了所有初始化,并在调用onVectorElementClicked方法时更改了visiblity.以下是它基本上看起来的片段:

@Override

public void onMapClicked(double x, double y, boolean b) {

Toast.makeText(activity, "onMapClicked " + (new EPSG3857()).toWgs84(x, y).x + " " + (new EPSG3857()).toWgs84(x, y).y, Toast.LENGTH_SHORT).show();

Log.d(TAG, "onMapClicked " + x + " " + y);

activity.runOnUiThread(new Runnable() {

@Override

public void run() {

mPoiGlanceView.setVisibility(View.INVISIBLE);

}

});

}

@Override

public void onVectorElementClicked(VectorElement vectorElement, double v, double v2, boolean b) {

if (vectorElement != null && vectorElement instanceof Marker) {

showPopupView(vectorElement);

Toast.makeText(activity, "onLabelClicked Marker!", Toast.LENGTH_SHORT).show();

}

}

private void showPopupView(VectorElement vectorElement) {

mPoiGlanceView.setVisibility(View.VISIBLE);

setUpUiElementsForView();

}

我在使用nutiteq see here“使用Android标准布局工具”的github文档中受到ViewLabel替代方案的启发

标签:android-handler,android,nutiteq,android-looper

来源: https://codeday.me/bug/20190830/1765166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值