1

上下文

我正在开发一个应用程序,用户可以通过用手指擦除前面的视图来显示内容(地图片段)。

我创建了一个处理绘图的 customView(类似于 google fingerpaint - 擦除示例),并将这个视图添加到我的内容前面。我添加了一个函数来记录两个 ontouchevent 移动之间的时间。

case MotionEvent.ACTION_MOVE:
  mTime = System.currentTimeMillis()-mTime;
  mTimeList.add(mTime);
  mTime = System.currentTimeMillis();
  [...]
  path.lineTo(event.getX(), event.getY());
  invalidate();
  break;
case MotionEvent.ACTION_UP:
  int listSize = mTimeList.size();
  long value =0;
  for (Long time : mTimeList) {
  value = value+time;
  }
  int finalvalue = (int) ((value/listSize));
  Log.i("MotionEvent", "Average time : "+Long.toString(finalvalue));
break;

我的问题

  • 当我创建我的活动并将布局设置为我的自定义视图时,它工作得很好。只有我的customView,两次移动之间的时间大约是17ms

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(new MyView(this));
    
  • 当我创建我的活动并将我的自定义视图添加到一个空的主布局(相对布局)时,两次移动之间的时间几乎相同。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapfullscreen_hotcold);
    RelativeLayout mainLayout = (RelativeLayout)findViewById(R.id.mapfullscreen_relativeLayout);
    MyView view = new MyView(this);
    mainLayout.addView(view);
    
  • 当我创建我的活动并将我的自定义视图添加到包含地图片段的主布局(相对布局)时,两次移动之间的时间约为47ms

    ---ACTIVITY---
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapfullscreen_hotcold);
    RelativeLayout mainLayout = (RelativeLayout)findViewById(R.id.mapfullscreen_relativeLayout);
    MyView view = new MyView(this);
    mainLayout.addView(view);
    
    ---XML---
    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapfullscreen_relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment
    android:id="@+id/mapfullscree_mapLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.google.android.gms.maps.MapFragment" />
    </RelativeLayout>
    

我该怎么做才能让它更快?

当我触摸视图时,下面的内容应该不会影响我的 view-motionevent,对吧?

编辑:当我将自定义视图添加到包含使用 mapsStaticAPI 填充的 imageView 的主布局(相对布局)时,两次移动之间的时间约为 17 毫秒/19 毫秒。

有什么解决方案可以让 googleMapsFragment 在两次移动之间有短暂的延迟?

4

0 回答 0