@SmallTest
  public void testOnUp() {
    KeyEventButtonTouchListener keyEventButtonTouchListener =
        new KeyEventButtonTouchListener(1, 10);
    KeyEventHandler keyEventHandler = createKeyEventHandlerMock();
    keyEventButtonTouchListener.setKeyEventHandler(keyEventHandler);

    View view = new View(getInstrumentation().getTargetContext());
    view.layout(0, 0, 50, 50);
    Key key = KeyEventButtonTouchListener.createKey(view, 1, 10);
    KeyEventContext keyEventContext =
        new KeyEventContext(key, 0, 0, 0, 0, 100, 100, Collections.<MetaState>emptySet());
    keyEventButtonTouchListener.keyEventContext = keyEventContext;

    keyEventHandler.cancelDelayedKeyEvent(keyEventContext);
    keyEventHandler.sendKey(eq(10), EasyMock.<List<TouchEvent>>notNull());
    keyEventHandler.sendRelease(10);
    replayAll();

    view.setPressed(true);
    keyEventButtonTouchListener.onUp(view, 25, 25, 100);

    verifyAll();
    assertNull(keyEventButtonTouchListener.keyEventContext);
    assertFalse(view.isPressed());
  }
  @SmallTest
  public void testOnDown() {
    KeyEventButtonTouchListener keyEventButtonTouchListener =
        new KeyEventButtonTouchListener(1, 10);
    KeyEventHandler keyEventHandler = createKeyEventHandlerMock();
    keyEventButtonTouchListener.setKeyEventHandler(keyEventHandler);

    Context context = getInstrumentation().getContext();
    ViewGroup parent = new FrameLayout(context);
    parent.layout(0, 0, 100, 100);
    View view = new View(context);
    parent.addView(view);
    view.layout(0, 0, 50, 50);
    Key key = KeyEventButtonTouchListener.createKey(view, 1, 10);
    KeyEventContext keyEventContext =
        new KeyEventContext(key, 0, 0, 0, 0, 100, 100, Collections.<MetaState>emptySet());
    keyEventButtonTouchListener.keyEventContext = keyEventContext;

    // For onDown, first, cancelDelayedKeyEvent should be invoked to cancel old
    // event, then maybeStartDelayedKeyEvent and sendPress should follow.
    keyEventHandler.cancelDelayedKeyEvent(keyEventContext);
    keyEventHandler.maybeStartDelayedKeyEvent(isA(KeyEventContext.class));
    keyEventHandler.sendPress(10);
    replayAll();

    keyEventButtonTouchListener.onDown(view, 0, 0);

    verifyAll();
    assertNotSame(keyEventContext, keyEventButtonTouchListener.keyEventContext);
    assertTrue(view.isPressed());
  }
  @Override
  public boolean dispatchTouchEvent(MotionEvent event) {
    if (!onFilterTouchEventForSecurity(event)) return false;

    int action = event.getAction();

    double dx = event.getX() - mCenterX;
    double dy = mCenterY - event.getY();
    double radius = Math.sqrt(dx * dx + dy * dy);

    // Check if the event should be dispatched to the shutter button.
    if (radius <= mShutterButtonRadius) {
      if (mIndicatorControlWheel.getVisibility() == View.VISIBLE) {
        mIndicatorControlWheel.onTouchOutBound();
      }
      if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_UP) {
        return mShutterButton.dispatchTouchEvent(event);
      }
      return false;
    }

    if (mShutterButton.isPressed()) {
      // Send cancel to the shutter button if it was pressed.
      event.setAction(MotionEvent.ACTION_CANCEL);
      mShutterButton.dispatchTouchEvent(event);
      return true;
    }

    return mIndicatorControlWheel.dispatchTouchEvent(event);
  }
Ejemplo n.º 4
0
 private static String m91a(View view) {
   char c = 'F';
   char c2 = '.';
   StringBuilder stringBuilder = new StringBuilder(128);
   stringBuilder.append(view.getClass().getName());
   stringBuilder.append('{');
   stringBuilder.append(Integer.toHexString(System.identityHashCode(view)));
   stringBuilder.append(' ');
   switch (view.getVisibility()) {
     case 0:
       stringBuilder.append('V');
       break;
     case 4:
       stringBuilder.append('I');
       break;
     case 8:
       stringBuilder.append('G');
       break;
     default:
       stringBuilder.append('.');
       break;
   }
   stringBuilder.append(view.isFocusable() ? 'F' : '.');
   stringBuilder.append(view.isEnabled() ? 'E' : '.');
   stringBuilder.append(view.willNotDraw() ? '.' : 'D');
   stringBuilder.append(view.isHorizontalScrollBarEnabled() ? 'H' : '.');
   stringBuilder.append(view.isVerticalScrollBarEnabled() ? 'V' : '.');
   stringBuilder.append(view.isClickable() ? 'C' : '.');
   stringBuilder.append(view.isLongClickable() ? 'L' : '.');
   stringBuilder.append(' ');
   if (!view.isFocused()) {
     c = '.';
   }
   stringBuilder.append(c);
   stringBuilder.append(view.isSelected() ? 'S' : '.');
   if (view.isPressed()) {
     c2 = 'P';
   }
   stringBuilder.append(c2);
   stringBuilder.append(' ');
   stringBuilder.append(view.getLeft());
   stringBuilder.append(',');
   stringBuilder.append(view.getTop());
   stringBuilder.append('-');
   stringBuilder.append(view.getRight());
   stringBuilder.append(',');
   stringBuilder.append(view.getBottom());
   int id = view.getId();
   if (id != -1) {
     stringBuilder.append(" #");
     stringBuilder.append(Integer.toHexString(id));
     Resources resources = view.getResources();
     if (!(id == 0 || resources == null)) {
       String str;
       switch (-16777216 & id) {
         case 16777216:
           str = "android";
           break;
         case 2130706432:
           str = "app";
           break;
         default:
           try {
             str = resources.getResourcePackageName(id);
             break;
           } catch (NotFoundException e) {
             break;
           }
       }
       String resourceTypeName = resources.getResourceTypeName(id);
       String resourceEntryName = resources.getResourceEntryName(id);
       stringBuilder.append(" ");
       stringBuilder.append(str);
       stringBuilder.append(":");
       stringBuilder.append(resourceTypeName);
       stringBuilder.append("/");
       stringBuilder.append(resourceEntryName);
     }
   }
   stringBuilder.append("}");
   return stringBuilder.toString();
 }
 private static String a(View paramView)
 {
   char c3 = 'F';
   char c2 = '.';
   StringBuilder localStringBuilder = new StringBuilder(128);
   localStringBuilder.append(paramView.getClass().getName());
   localStringBuilder.append('{');
   localStringBuilder.append(Integer.toHexString(System.identityHashCode(paramView)));
   localStringBuilder.append(' ');
   char c1;
   label118:
   label135:
   label152:
   label169:
   label186:
   label203:
   label220:
   label244:
   label261:
   int n;
   Object localObject;
   switch (paramView.getVisibility())
   {
   default: 
     localStringBuilder.append('.');
     if (paramView.isFocusable())
     {
       c1 = 'F';
       localStringBuilder.append(c1);
       if (!paramView.isEnabled()) {
         break label562;
       }
       c1 = 'E';
       localStringBuilder.append(c1);
       if (!paramView.willNotDraw()) {
         break label568;
       }
       c1 = '.';
       localStringBuilder.append(c1);
       if (!paramView.isHorizontalScrollBarEnabled()) {
         break label574;
       }
       c1 = 'H';
       localStringBuilder.append(c1);
       if (!paramView.isVerticalScrollBarEnabled()) {
         break label580;
       }
       c1 = 'V';
       localStringBuilder.append(c1);
       if (!paramView.isClickable()) {
         break label586;
       }
       c1 = 'C';
       localStringBuilder.append(c1);
       if (!paramView.isLongClickable()) {
         break label592;
       }
       c1 = 'L';
       localStringBuilder.append(c1);
       localStringBuilder.append(' ');
       if (!paramView.isFocused()) {
         break label598;
       }
       c1 = c3;
       localStringBuilder.append(c1);
       if (!paramView.isSelected()) {
         break label604;
       }
       c1 = 'S';
       localStringBuilder.append(c1);
       c1 = c2;
       if (paramView.isPressed()) {
         c1 = 'P';
       }
       localStringBuilder.append(c1);
       localStringBuilder.append(' ');
       localStringBuilder.append(paramView.getLeft());
       localStringBuilder.append(',');
       localStringBuilder.append(paramView.getTop());
       localStringBuilder.append('-');
       localStringBuilder.append(paramView.getRight());
       localStringBuilder.append(',');
       localStringBuilder.append(paramView.getBottom());
       n = paramView.getId();
       if (n != -1)
       {
         localStringBuilder.append(" #");
         localStringBuilder.append(Integer.toHexString(n));
         localObject = paramView.getResources();
         if ((n != 0) && (localObject != null)) {
           switch (0xFF000000 & n)
           {
           }
         }
       }
     }
     break;
   }
   for (;;)
   {
     try
     {
       paramView = ((Resources)localObject).getResourcePackageName(n);
       String str = ((Resources)localObject).getResourceTypeName(n);
       localObject = ((Resources)localObject).getResourceEntryName(n);
       localStringBuilder.append(" ");
       localStringBuilder.append(paramView);
       localStringBuilder.append(":");
       localStringBuilder.append(str);
       localStringBuilder.append("/");
       localStringBuilder.append((String)localObject);
     }
     catch (Resources.NotFoundException paramView)
     {
       label562:
       label568:
       label574:
       label580:
       label586:
       label592:
       label598:
       label604:
       continue;
     }
     localStringBuilder.append("}");
     return localStringBuilder.toString();
     localStringBuilder.append('V');
     break;
     localStringBuilder.append('I');
     break;
     localStringBuilder.append('G');
     break;
     c1 = '.';
     break label118;
     c1 = '.';
     break label135;
     c1 = 'D';
     break label152;
     c1 = '.';
     break label169;
     c1 = '.';
     break label186;
     c1 = '.';
     break label203;
     c1 = '.';
     break label220;
     c1 = '.';
     break label244;
     c1 = '.';
     break label261;
     paramView = "app";
     continue;
     paramView = "android";
   }
 }