在Android ListView中使用箭头显示地方的方向

TNR*_*TNR 12 android location android-sensors

我要求在Android中显示某些地方的列表ListView以及该地点的方向.我能够找到位置之间的角度,但问题是我的客户端需要在旋转或移动设备时旋转箭头.我没有找到任何按照传感器更改旋转箭头的解决方案.在这样的要求中做任何一个吗?请建议我一些解决方案,以便在此iPhone应用程序中显示列表.或者看下面的图像.

更新:

我期待任何答案,这将有助于启动以下要求.即使单独显示箭头也是受欢迎的,因此我将尽力实现以下目标.我所做的所有样品都在摇晃,它们不稳定.

在此输入图像描述

S.D*_*.D. 2

让您的适配器保存一个对象集合,其中包含您想要的每个列表项的所有信息,包括用于箭头旋转的浮点值。

public class Place {
 private Srting name;
 private double distance;
 private float arrowAngle;

//-- etc etc--
Run Code Online (Sandbox Code Playgroud)

覆盖适配器getView(),设置箭头视图的旋转:

@Override
public View getView(View currentView, int position, ViewGroup parent){
  //--inflate layout for each row, find views, set values etc etc--

  Place p = getItem(position);
  arrowView.setRotation(p.getArrowAngle());

 //--return inflated view --
}
Run Code Online (Sandbox Code Playgroud)

更改传感器时,计算每个箭头的新角度,并更新适配器中的每个数据对象。

for (int i = 0 ; i < adapter.getCount(); i++){
    Place p = adapter.getItem(i);

   //--calculate angle--

   p.setArrowAngle(newAngle);
}

adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

这样就可以了,但是传感器可能变化很快,ListView数据更新太多会导致ListView滞后,要限制更新,声明一个long变量lastUpdated,传感器变化时看看是否System.nanoTime() - lastupdated > 500,然后只调用上面的更新代码。这会将更新间隔限制为 500 毫秒。