private void prepareLayouts(int move) {
   if (move == 0) {
     reuseView(centerView);
     reuseView(leftView);
     reuseView(rightView);
     for (int a = currentMessageNum - 1; a < currentMessageNum + 2; a++) {
       if (a == currentMessageNum - 1) {
         leftView = getViewForMessage(a, true);
       } else if (a == currentMessageNum) {
         centerView = getViewForMessage(a, true);
       } else if (a == currentMessageNum + 1) {
         rightView = getViewForMessage(a, true);
       }
     }
   } else if (move == 1) {
     reuseView(rightView);
     rightView = centerView;
     centerView = leftView;
     leftView = getViewForMessage(currentMessageNum - 1, true);
   } else if (move == 2) {
     reuseView(leftView);
     leftView = centerView;
     centerView = rightView;
     rightView = getViewForMessage(currentMessageNum + 1, true);
   } else if (move == 3) {
     if (rightView != null) {
       int offset = ((FrameLayout.LayoutParams) rightView.getLayoutParams()).leftMargin;
       reuseView(rightView);
       rightView = getViewForMessage(currentMessageNum + 1, false);
       int widht = AndroidUtilities.displaySize.x - AndroidUtilities.dp(24);
       FrameLayout.LayoutParams layoutParams =
           (FrameLayout.LayoutParams) rightView.getLayoutParams();
       layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
       layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
       layoutParams.width = widht;
       layoutParams.leftMargin = offset;
       rightView.setLayoutParams(layoutParams);
       rightView.invalidate();
     }
   } else if (move == 4) {
     if (leftView != null) {
       int offset = ((FrameLayout.LayoutParams) leftView.getLayoutParams()).leftMargin;
       reuseView(leftView);
       leftView = getViewForMessage(0, false);
       int widht = AndroidUtilities.displaySize.x - AndroidUtilities.dp(24);
       FrameLayout.LayoutParams layoutParams =
           (FrameLayout.LayoutParams) leftView.getLayoutParams();
       layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
       layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
       layoutParams.width = widht;
       layoutParams.leftMargin = offset;
       leftView.setLayoutParams(layoutParams);
       leftView.invalidate();
     }
   }
 }
  private void applyTo(View target) {

    LayoutParams lp = target.getLayoutParams();
    ViewParent parent = target.getParent();
    FrameLayout container = new FrameLayout(context);

    if (target instanceof TabWidget) {

      // set target to the relevant tab child container
      target = ((TabWidget) target).getChildTabViewAt(targetTabIndex);
      this.target = target;

      ((ViewGroup) target)
          .addView(container, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

      this.setVisibility(View.GONE);
      container.addView(this);

    } else {

      // TODO verify that parent is indeed a ViewGroup
      ViewGroup group = (ViewGroup) parent;
      int index = group.indexOfChild(target);

      group.removeView(target);
      group.addView(container, index, lp);

      container.addView(target);

      this.setVisibility(View.GONE);
      container.addView(this);

      group.invalidate();
    }
  }
 private void applyViewsLayoutParams(int xOffset) {
   FrameLayout.LayoutParams layoutParams;
   int widht = AndroidUtilities.displaySize.x - AndroidUtilities.dp(24);
   if (leftView != null) {
     layoutParams = (FrameLayout.LayoutParams) leftView.getLayoutParams();
     layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
     layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
     layoutParams.width = widht;
     layoutParams.leftMargin = -widht + xOffset;
     leftView.setLayoutParams(layoutParams);
   }
   if (centerView != null) {
     layoutParams = (FrameLayout.LayoutParams) centerView.getLayoutParams();
     layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
     layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
     layoutParams.width = widht;
     layoutParams.leftMargin = xOffset;
     centerView.setLayoutParams(layoutParams);
   }
   if (rightView != null) {
     layoutParams = (FrameLayout.LayoutParams) rightView.getLayoutParams();
     layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
     layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
     layoutParams.width = widht;
     layoutParams.leftMargin = widht + xOffset;
     rightView.setLayoutParams(layoutParams);
   }
   messageContainer.invalidate();
 }
 public void refresh() {
   recipes.removeAllViews();
   for (Suggestion s : recipe.getSuggestedWith()) {
     recipes.addView(createRecipeEntry(s));
   }
   recipes.invalidate();
 }
        @Override
        public void onLocationChanged(Location location) {

          if (counterEnter == 0) {
            counterEnter++;
            checkLocation(location);
            vg.invalidate();
          }
        }
 private void bringViewToFront(View view) {
   ViewGroup group = (ViewGroup) view.getParent();
   int index = group.indexOfChild(view);
   if (index != group.getChildCount() - 1) {
     view.bringToFront();
     if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
       view.requestLayout();
       group.invalidate();
     }
   }
 }
 /** @param floatView */
 private void applyToNormal(View floatView) {
   ViewGroup group = (ViewGroup) this.getParent();
   LinearLayout.LayoutParams lp =
       (LinearLayout.LayoutParams)
           ((ViewGroup) this.getChildAt(0)).getChildAt(originIndex).getLayoutParams();
   ((ViewGroup) group).removeView(floatView);
   ((ViewGroup) this.getChildAt(0)).removeViewAt(originIndex);
   ((ViewGroup) this.getChildAt(0)).addView(floatView, originIndex, lp);
   mInsteadView = floatView;
   group.invalidate();
 }
  /** @param floatView */
  private void applyToFloat(View floatView) {

    originIndex = ((ViewGroup) this.getChildAt(0)).indexOfChild(floatView);
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) floatView.getLayoutParams();
    View v = new View(context);
    v.setTag("view");
    ((ViewGroup) this.getChildAt(0)).removeView(floatView);
    ((ViewGroup) this.getChildAt(0)).addView(v, originIndex, lp);
    ViewGroup group = (ViewGroup) this.getParent();
    ((ViewGroup) group).addView(floatView);
    mInsteadView = v;
    group.invalidate();
  }
  /** @param floatView */
  private void initFloatView(View floatView) {
    //        ((ViewGroup)this.getChildAt(0)).removeView(floatView);
    LayoutParams lp = (LayoutParams) this.getLayoutParams();
    ViewGroup group = (ViewGroup) this.getParent();
    FrameLayout container = new FrameLayout(context);

    int index = group.indexOfChild(this);
    group.removeView(this);
    group.addView(container, index, lp);
    container.removeAllViews();
    container.addView(this);
    group.invalidate();
  }
  @Override
  public boolean onTouch(View view, MotionEvent event) {
    TouchPoint touchPoint = new TouchPoint(event);
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
      case MotionEvent.ACTION_DOWN:
        sendAnimation.onSwipeStart(touchPoint);

        break;
      case MotionEvent.ACTION_UP:
        sendAnimation.onSwipeEnd(touchPoint);

        break;
      case MotionEvent.ACTION_POINTER_DOWN:
        break;
      case MotionEvent.ACTION_POINTER_UP:
        break;
      case MotionEvent.ACTION_MOVE:
        sendAnimation.onSwiping(touchPoint);

        break;
    }
    mRrootLayout.invalidate();
    return true;
  }
Exemple #11
0
  public boolean onTouch(View view, MotionEvent event) {
    float scale;
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
      case MotionEvent.ACTION_DOWN:
        view.setBackgroundResource(R.drawable.border);
        garbage.setVisibility(View.VISIBLE);
        RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
        _xDelta = X - lParams.leftMargin;
        _yDelta = Y - lParams.topMargin;

        start.set(event.getX(), event.getY());
        mode = DRAG;
        break;
      case MotionEvent.ACTION_UP:
        Iterator<View> iterator;
        mode = NONE;
        garbage.setVisibility(View.INVISIBLE);
        view.setBackgroundResource(R.color.none);
        if (event.getRawY() > 1530) {
          if (position_status == FRONT) {
            iterator = ViewList.iterator();
          } else {
            iterator = ViewListBack.iterator();
          }
          view.setVisibility(View.GONE);

          while (iterator.hasNext()) {
            View i = iterator.next();
            if (i == view) {
              iterator.remove();
            }
          }
        }
        break;
      case MotionEvent.ACTION_POINTER_DOWN:
        oldDist = spacing(event);
        if (oldDist > 8f) {
          RelativeLayout.LayoutParams zParams =
              (RelativeLayout.LayoutParams) view.getLayoutParams();
          midPoint(mid, event);
          _xDelta = (int) mid.x - zParams.leftMargin;
          _yDelta = (int) mid.y - zParams.topMargin;
          mode = ZOOM;
        }
        break;
      case MotionEvent.ACTION_POINTER_UP:
        mode = NONE;
        break;
      case MotionEvent.ACTION_MOVE:
        RelativeLayout.LayoutParams layoutParams =
            (RelativeLayout.LayoutParams) view.getLayoutParams();
        if (mode == DRAG) {
          layoutParams.leftMargin = X - _xDelta;
          layoutParams.topMargin = Y - _yDelta;
          layoutParams.rightMargin = -250;
          layoutParams.bottomMargin = -250;
          view.setLayoutParams(layoutParams);
          rectView = new Rect();
          view.getDrawingRect(rectView);
          if (event.getRawY() > 1530) {
            view.setBackgroundResource(R.color.deletecolor);
          } else view.setBackgroundResource(R.drawable.border);

        } else if (mode == ZOOM) {
          // pinch zooming
          float newDist = spacing(event);
          if (newDist > 8f) {
            // setting the scaling of the
            scale = newDist / oldDist;

            if (view instanceof ImageView) {
              int imgSizeH = view.getHeight();
              int imgSizeW = view.getWidth();
              imgSizeH = (int) (imgSizeH * scale);
              imgSizeW = (int) (imgSizeW * scale);
              layoutParams.width = imgSizeW;
              layoutParams.height = imgSizeH;
              layoutParams.leftMargin = (int) mid.x - _xDelta;
              layoutParams.topMargin = (int) mid.y - _yDelta;
              layoutParams.rightMargin = -250;
              layoutParams.bottomMargin = -250;
              view.setLayoutParams(layoutParams);

            } else if (view instanceof TextView) {
              // textSize = ((TextView) view).getTextSize();
              textSize = textSize * scale;
              ((TextView) view).setTextSize(textSize);
            }
            oldDist = newDist;
          }
        }
        break;
    }
    mRrootLayout.invalidate();
    return true;
  }
  @Override
  public boolean onTouch(View view, MotionEvent event) {
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();

    switch (event.getActionMasked()) {
      case MotionEvent.ACTION_DOWN:
        {
          RelativeLayout.LayoutParams layoutParams =
              new RelativeLayout.LayoutParams(button.getLayoutParams());
          layoutParams.leftMargin = startX;
          layoutParams.topMargin = startY;
          view.setLayoutParams(layoutParams);
          xDelta = X - layoutParams.leftMargin;
          yDelta = Y - layoutParams.topMargin;
          initX = X;
          initY = Y;
          break;
        }
      case MotionEvent.ACTION_UP:
        {
          centerButtonWithAnimation();
          dragValue = 0;

          if (mListener != null) {
            if ((xAxisLocked || yAxisLocked)) {
              if (xAxisLocked) mListener.onDragEnded(true);
              else mListener.onDragEnded(false);
            } else mListener.onClicked();
          }
          setDragAxis(mDragAxis);
          break;
        }
      case MotionEvent.ACTION_OUTSIDE:
      case MotionEvent.ACTION_CANCEL:
        {
          centerButtonWithAnimation();
          dragValue = 0;
          if (mListener != null) {
            if (xAxisLocked) mListener.onDragEnded(true);
            else mListener.onDragEnded(false);
          }
          setDragAxis(mDragAxis);
        }
        break;
      case MotionEvent.ACTION_MOVE:
        {
          int diffY = Y - initY;
          int diffX = X - initX;

          if (diffX > 0) {

            if (diffX > THRESHOLD && !yAxisLocked) {
              // move right
              if (!xAxisLocked) {
                xAxisLocked = true;
                if (mListener != null) {
                  mListener.onDragStarted(true);
                }
              }
              RelativeLayout.LayoutParams layoutParams =
                  (RelativeLayout.LayoutParams) view.getLayoutParams();
              if (layoutParams.leftMargin < parentWidth - view.getWidth()) {
                layoutParams.leftMargin = X - xDelta;
                view.setLayoutParams(layoutParams);

                int value = (X - initX) / (view.getWidth() / 2);
                if (value > dragValue && mListener != null) {
                  mListener.onDragRight(value);
                  Log.d("Drag control", "Right------");
                  dragValue++;
                }
              }
              break;
            }
          } else {
            if (diffX < -THRESHOLD && !yAxisLocked) {
              // move left

              if (!xAxisLocked) {
                xAxisLocked = true;
                if (mListener != null) {
                  mListener.onDragStarted(true);
                }
              }
              RelativeLayout.LayoutParams layoutParams =
                  (RelativeLayout.LayoutParams) view.getLayoutParams();
              if (layoutParams.leftMargin > 0) {
                layoutParams.leftMargin = X - xDelta;
                view.setLayoutParams(layoutParams);

                int value = (initX - X) / (view.getWidth() / 2);
                if (value > dragValue && mListener != null) {
                  mListener.onDragLeft(value);
                  Log.d("Drag control", "Left------");
                  dragValue++;
                }
              }
              break;
            }
          }

          if (diffY > 0) {

            if (diffY > THRESHOLD && !xAxisLocked) {
              // move down
              if (!yAxisLocked) {
                yAxisLocked = true;
                if (mListener != null) {
                  mListener.onDragStarted(false);
                }
              }
              RelativeLayout.LayoutParams layoutParams =
                  (RelativeLayout.LayoutParams) view.getLayoutParams();

              if (layoutParams.topMargin < parentHeight - view.getHeight()) {
                layoutParams.topMargin = Y - yDelta;
                view.setLayoutParams(layoutParams);

                int value = (Y - initY) / (view.getHeight() / 2);
                if (value > dragValue && mListener != null) {
                  mListener.onDragDown(1);
                  Log.d("Drag control", "Down------");
                  dragValue++;
                }
              }
              break;
            }
          } else {
            if (diffY < -THRESHOLD && !xAxisLocked) {
              // move up
              if (!yAxisLocked) {
                yAxisLocked = true;
                if (mListener != null) {
                  mListener.onDragStarted(false);
                }
              }
              RelativeLayout.LayoutParams layoutParams =
                  (RelativeLayout.LayoutParams) view.getLayoutParams();
              if (layoutParams.topMargin > 0) {
                layoutParams.topMargin = Y - yDelta;
                view.setLayoutParams(layoutParams);
                int value = (initY - Y) / (view.getHeight() / 2);
                if (value > dragValue && mListener != null) {
                  mListener.onDragUp(1);
                  Log.d("Drag control", "Up------");
                  dragValue++;
                }
              }
              break;
            }
          }
          break;
        }
    }
    root.invalidate();
    return true;
  }
  private ViewGroup getViewForMessage(int num, boolean applyOffset) {
    if (NotificationsController.getInstance().popupMessages.size() == 1
        && (num < 0 || num >= NotificationsController.getInstance().popupMessages.size())) {
      return null;
    }
    if (num == -1) {
      num = NotificationsController.getInstance().popupMessages.size() - 1;
    } else if (num == NotificationsController.getInstance().popupMessages.size()) {
      num = 0;
    }
    ViewGroup view;
    MessageObject messageObject = NotificationsController.getInstance().popupMessages.get(num);
    if (messageObject.type == 1 || messageObject.type == 4) {
      if (imageViews.size() > 0) {
        view = imageViews.get(0);
        imageViews.remove(0);
      } else {
        view = new FrameLayoutAnimationListener(this);
        view.addView(getLayoutInflater().inflate(R.layout.popup_image_layout, null));
        view.setTag(2);

        view.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                openCurrentMessage();
              }
            });
      }

      TextView messageText = (TextView) view.findViewById(R.id.message_text);
      BackupImageView imageView = (BackupImageView) view.findViewById(R.id.message_image);
      imageView.setAspectFit(true);

      if (messageObject.type == 1) {
        TLRPC.PhotoSize currentPhotoObject =
            FileLoader.getClosestPhotoSizeWithSize(
                messageObject.photoThumbs, AndroidUtilities.getPhotoSize());
        TLRPC.PhotoSize thumb =
            FileLoader.getClosestPhotoSizeWithSize(messageObject.photoThumbs, 100);
        boolean photoSet = false;
        if (currentPhotoObject != null) {
          boolean photoExist = true;
          if (messageObject.type == 1) {
            File cacheFile = FileLoader.getPathToMessage(messageObject.messageOwner);
            if (!cacheFile.exists()) {
              photoExist = false;
            }
          }
          if (photoExist
              || MediaController.getInstance()
                  .canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_PHOTO)) {
            imageView.setImage(
                currentPhotoObject.location, "100_100", thumb.location, currentPhotoObject.size);
            photoSet = true;
          } else {
            if (thumb != null) {
              imageView.setImage(thumb.location, null, (Drawable) null);
              photoSet = true;
            }
          }
        }
        if (!photoSet) {
          imageView.setVisibility(View.GONE);
          messageText.setVisibility(View.VISIBLE);
          messageText.setTextSize(
              TypedValue.COMPLEX_UNIT_SP, MessagesController.getInstance().fontSize);
          messageText.setText(messageObject.messageText);
        } else {
          imageView.setVisibility(View.VISIBLE);
          messageText.setVisibility(View.GONE);
        }
      } else if (messageObject.type == 4) {
        messageText.setVisibility(View.GONE);
        messageText.setText(messageObject.messageText);
        imageView.setVisibility(View.VISIBLE);
        double lat = messageObject.messageOwner.media.geo.lat;
        double lon = messageObject.messageOwner.media.geo._long;
        String currentUrl =
            String.format(
                Locale.US,
                "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=13&size=100x100&maptype=roadmap&scale=%d&markers=color:red|size:big|%f,%f&sensor=false",
                lat,
                lon,
                Math.min(2, (int) Math.ceil(AndroidUtilities.density)),
                lat,
                lon);
        imageView.setImage(currentUrl, null, null);
      }
    } else if (messageObject.type == 2) {
      PopupAudioView cell;
      if (audioViews.size() > 0) {
        view = audioViews.get(0);
        audioViews.remove(0);
        cell = (PopupAudioView) view.findViewWithTag(300);
      } else {
        view = new FrameLayoutAnimationListener(this);
        view.addView(getLayoutInflater().inflate(R.layout.popup_audio_layout, null));
        view.setTag(3);

        view.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                openCurrentMessage();
              }
            });

        ViewGroup audioContainer = (ViewGroup) view.findViewById(R.id.audio_container);
        cell = new PopupAudioView(this);
        cell.setTag(300);
        audioContainer.addView(cell);
      }

      cell.setMessageObject(messageObject);
      if (MediaController.getInstance().canDownloadMedia(MediaController.AUTODOWNLOAD_MASK_AUDIO)) {
        cell.downloadAudioIfNeed();
      }
    } else {
      if (textViews.size() > 0) {
        view = textViews.get(0);
        textViews.remove(0);
      } else {
        view = new FrameLayoutAnimationListener(this);
        view.addView(getLayoutInflater().inflate(R.layout.popup_text_layout, null));
        view.setTag(1);

        View textContainer = view.findViewById(R.id.text_container);
        textContainer.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                openCurrentMessage();
              }
            });
      }
      TextView messageText = (TextView) view.findViewById(R.id.message_text);
      messageText.setTag(301);
      messageText.setTextSize(
          TypedValue.COMPLEX_UNIT_SP, MessagesController.getInstance().fontSize);
      messageText.setText(messageObject.messageText);
    }
    if (view.getParent() == null) {
      messageContainer.addView(view);
    }
    view.setVisibility(View.VISIBLE);

    if (applyOffset) {
      int widht = AndroidUtilities.displaySize.x - AndroidUtilities.dp(24);
      FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams();
      layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
      layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
      layoutParams.width = widht;
      if (num == currentMessageNum) {
        layoutParams.leftMargin = 0;
      } else if (num == currentMessageNum - 1) {
        layoutParams.leftMargin = -widht;
      } else if (num == currentMessageNum + 1) {
        layoutParams.leftMargin = widht;
      }
      view.setLayoutParams(layoutParams);
      view.invalidate();
    }

    return view;
  }