android.view.View#getX ( )源码实例Demo

下面列出了android.view.View#getX ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: react-native-GPay   文件: LayoutUpdateAnimation.java
@Override
@Nullable Animation createAnimationImpl(View view, int x, int y, int width, int height) {
  boolean animateLocation = view.getX() != x || view.getY() != y;
  boolean animateSize = view.getWidth() != width || view.getHeight() != height;
  if (!animateLocation && !animateSize) {
    return null;
  } else if (animateLocation && !animateSize && USE_TRANSLATE_ANIMATION) {
    // Use GPU-accelerated animation, however we loose the ability to resume interrupted
    // animation where it was left off. We may be able to listen to animation interruption
    // and set the layout manually in this case, so that next animation kicks off smoothly.
    return new TranslateAnimation(view.getX() - x, 0, view.getY() - y, 0);
  } else {
    // Animation is sub-optimal for perf, but scale transformation can't be use in this case.
    return new PositionAndSizeAnimation(view, x, y, width, height);
  }
}
 
源代码2 项目: FABRevealMenu-master   文件: AnimationHelper.java
public void moveFab(View fabView, View revealView, Direction direction, boolean isReturning, final AnimationListener listener) {
    float scaleFactor = isReturning ? -FAB_SCALE_FACTOR : FAB_SCALE_FACTOR;
    float alpha = isReturning ? 1.0f : 1.0f;
    float endX;
    float endY;

    if (!isReturning) {
        Point anchorPoint = viewHelper.updateFabAnchor(fabView);
        anchorX = anchorPoint.x;
        anchorY = anchorPoint.y;
        endX = revealView.getX() + centerX;
        endY = revealView.getY() + centerY;
    } else {
        endX = anchorX;
        endY = anchorY;
    }
    //move by arc animation
    startArcAnim(fabView, endX, endY, FAB_ARC_DEGREES, getArcSide(direction), FAB_ANIM_DURATION, fabAnimInterpolator, listener);
    //scale fab
    fabView.animate().scaleXBy(scaleFactor).scaleYBy(scaleFactor).alpha(alpha).setDuration(FAB_ANIM_DURATION).start();
}
 
源代码3 项目: linphone-android   文件: CallActivity.java
private boolean moveLocalPreview(View view, MotionEvent motionEvent) {
    switch (motionEvent.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mPreviewX = view.getX() - motionEvent.getRawX();
            mPreviewY = view.getY() - motionEvent.getRawY();
            break;

        case MotionEvent.ACTION_MOVE:
            view.animate()
                    .x(motionEvent.getRawX() + mPreviewX)
                    .y(motionEvent.getRawY() + mPreviewY)
                    .setDuration(0)
                    .start();
            break;
        default:
            return false;
    }
    return true;
}
 
源代码4 项目: PlayTogether   文件: SelectRecyclerView.java
/**
	 * 设置可视recyclerView可视item的属性(字体大小、透明度)
	 */
	public void setItemStyle()
	{
		int firstVisiblePos = mLayoutManager.findFirstVisibleItemPosition();
		int lastVisiblePos = mLayoutManager.findLastVisibleItemPosition();
		int itemHeight = getMeasuredHeight() / DISPLAY_ITEM_COUNT;
		for (int i = firstVisiblePos; i <= lastVisiblePos; i++)
		{
			View view = mLayoutManager.findViewByPosition(i);
			int x = (int) view.getX();
			int y = (int) view.getY();
			//itemCenter:item的中点,相对于parent的y距离
			int itemCenter = y + itemHeight / 2;
			if (itemCenter < 0) itemCenter = 0;
			//distanceToCenter:item的中点距离parent的y距离
			int distanceToCenter = Math.abs(getMeasuredHeight() / 2 - itemCenter);
//			Logger.e("toCenter:" + distanceToCenter + ",testSize:" + (float) (mMaxTextSize -
//					mTextSizeScale * distanceToCenter));
			TextView textview = (TextView) view.findViewById(R.id.tv);
			//距离中点最近的时候透明度最大,字体也最大
			//设置textview字体大小随着距离中点距离的改变而改变
			textview.setTextSize((float) (mMaxTextSize - mTextSizeScale * distanceToCenter));
			//设置textview透明度随着距离中点距离的改变而改变
			textview.setAlpha((float) (mMaxTextAlpha - mTextAlphaScale * distanceToCenter));
		}
	}
 
源代码5 项目: Android-PictureTagView   文件: PictureTagLayout.java
private boolean hasView(int x,int y){
	//循环获取子view,判断xy是否在子view上,即判断是否按住了子view
	for(int index = 0; index < this.getChildCount(); index ++){
		View view = this.getChildAt(index);
		int left = (int) view.getX();
		int top = (int) view.getY();
		int right = view.getRight();
		int bottom = view.getBottom();
		Rect rect = new Rect(left, top, right, bottom);
		boolean contains = rect.contains(x, y);
		//如果是与子view重叠则返回真,表示已经有了view不需要添加新view了
		if(contains){
			touchView = view;
			touchView.bringToFront();
			return true;
		}
	}
	touchView = null;
	return false;
}
 
源代码6 项目: turn-layout-manager   文件: TurnLayoutManager.java
/**
 * Given that the orientation is {@link Orientation#HORIZONTAL}, apply rotation if enabled.
 */
private void setChildRotationHorizontal(@Gravity int gravity, View child, int radius, Point center) {
    if (!rotate) {
        child.setRotation(0);
        return;
    }
    boolean childPastCenter = (child.getX() + child.getWidth() / 2) > center.x;
    float directionMult;
    if (gravity == Gravity.END) {
        directionMult = childPastCenter ? 1 : -1;
    } else {
        directionMult = childPastCenter ? -1 : 1;
    }
    final float opposite = Math.abs(child.getX() + child.getWidth() / 2.0f - center.x);
    child.setRotation((float) (directionMult * Math.toDegrees(Math.asin(opposite / radius))));
}
 
源代码7 项目: evercam-android   文件: OnSwipeTouchListener.java
private void onActionZoom(View view) {
    int originalWidth = view.getWidth();
    int originalHeight = view.getHeight();

    long currentTime = System.nanoTime();
    if (time != 0 && (currentTime - time) > 10000000) {
        int leftOffset = (int) (originalWidth - (originalWidth * scaleListener.scaleFactor));
        int topOffset = (int) (originalHeight - (originalHeight * scaleListener.scaleFactor));
        Log.e(TAG, "Offset: " + leftOffset + "," + topOffset);

        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
        layoutParams.setMargins(leftOffset, topOffset, leftOffset, topOffset);
        view.setLayoutParams(layoutParams);

        //Avoid showing the blanks
        if (view.getX() >= 0) {
            view.setX(0);
        }
        if (view.getX() + view.getWidth() <= getScreenWidth()) {
            view.setX(getScreenWidth() - view.getWidth());
        }
    }

    time = System.nanoTime();
}
 
源代码8 项目: o2oa   文件: CameraView.java
/**
 * 根据raw坐标转换成屏幕中所在的坐标
 * @param pointF
 * @return
 */
private PointF transPointF(PointF pointF, View view) {
    pointF.x -= view.getX();
    pointF.y -= view.getY();
    ViewParent parent = view.getParent();
    if (parent instanceof View) {
        return transPointF(pointF, (View) parent);
    } else {
        return pointF;
    }
}
 
/**
 * Update the child view from the dependency states
 *
 * @param child      child view
 * @param dependency dependency view
 */
void updateView(V child, View dependency) {
    float percent = 0;
    float start = 0;
    float current = 0;
    float end = UNSPECIFIED_INT;
    switch (mDependType) {
        case DEPEND_TYPE_WIDTH:
            start = mDependStartWidth;
            current = dependency.getWidth();
            end = mDependTarget;
            break;
        case DEPEND_TYPE_HEIGHT:
            start = mDependStartHeight;
            current = dependency.getHeight();
            end = mDependTarget;
            break;
        case DEPEND_TYPE_X:
            start = mDependStartX;
            current = dependency.getX();
            end = mDependTarget;
            break;
        case DEPEND_TYPE_Y:
            start = mDependStartY;
            current = dependency.getY();
            end = mDependTarget;
            break;
    }

    // need to define target value according to the depend type, if not then skip
    if (end != UNSPECIFIED_INT) {
        percent = Math.abs(current - start) / Math.abs(end - start);
    }
    updateViewWithPercent(child, percent > 1 ? 1 : percent);
}
 
源代码10 项目: DragListView   文件: DragItem.java
void startDrag(View startFromView, float touchX, float touchY) {
    show();
    mRealDragView = startFromView;
    onBindDragView(startFromView, mDragView);
    onMeasureDragView(startFromView, mDragView);
    onStartDragAnimation(mDragView);

    float startX = startFromView.getX() - (mDragView.getMeasuredWidth() - startFromView.getMeasuredWidth()) / 2f + mDragView
            .getMeasuredWidth() / 2f;
    float startY = startFromView.getY() - (mDragView.getMeasuredHeight() - startFromView.getMeasuredHeight()) / 2f + mDragView
            .getMeasuredHeight() / 2f;

    if (mSnapToTouch) {
        mPosTouchDx = 0;
        mPosTouchDy = 0;
        setPosition(touchX, touchY);
        setAnimationDx(startX - touchX);
        setAnimationDY(startY - touchY);

        PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("AnimationDx", mAnimationDx, 0);
        PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("AnimationDY", mAnimationDy, 0);
        ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY);
        anim.setInterpolator(new DecelerateInterpolator());
        anim.setDuration(ANIMATION_DURATION);
        anim.start();
    } else {
        mPosTouchDx = startX - touchX;
        mPosTouchDy = startY - touchY;
        setPosition(touchX, touchY);
    }
}
 
/**
 * Call this before making any changes to the view to setup values
 *
 * @param parent     coordinator layout as parent
 * @param child      view that will move when dependency changed
 * @param dependency dependency view
 */
void prepare(CoordinatorLayout parent, V child, View dependency) {
    mDependStartX = (int) dependency.getX();
    mDependStartY = (int) dependency.getY();
    mDependStartWidth = dependency.getWidth();
    mDependStartHeight = dependency.getHeight();

    isPrepared = true;
}
 
private void updateCurrentOffset() {
    final View firstView = findFirstVisibleView();
    if (firstView == null) {
        return;
    }

    int position = recyclerView.getChildAdapterPosition(firstView);
    if (position == RecyclerView.NO_POSITION) {
        return;
    }
    final int itemCount = attachedAdapter.getItemCount();

    // In case there is an infinite pager
    if (position >= itemCount && itemCount != 0) {
        position = position % itemCount;
    }

    float offset;
    if (layoutManager.getOrientation() == LinearLayoutManager.HORIZONTAL) {
        offset = (getCurrentFrameLeft() - firstView.getX()) / firstView.getMeasuredWidth();
    } else {
        offset = (getCurrentFrameBottom() - firstView.getY()) / firstView.getMeasuredHeight();
    }

    if (offset >= 0 && offset <= 1 && position < itemCount) {
        indicator.onPageScrolled(position, offset);
    }
}
 
源代码13 项目: RxAnimations   文件: RxAnimations.java
public static Completable slideHorizontal(final View view, final int duration, final int xOffset) {
    final float endingX = view.getX() + xOffset;
    return animate(view, new AccelerateDecelerateInterpolator())
            .duration(duration)
            .translateBy(xOffset, 0)
            .onAnimationCancel(v -> v.setX(endingX))
            .schedule(false);
}
 
源代码14 项目: MousePaint   文件: RhythmLayout.java
public int getFirstVisibleItemPosition() {
    if (mLinearLayout == null) {
        return 0;
    }
    int size = mLinearLayout.getChildCount();
    for (int i = 0; i < size; i++) {
        View view = mLinearLayout.getChildAt(i);
        if (getScrollX() < view.getX() + mItemWidth / 2.0F)
            return i;
    }
    return 0;
}
 
源代码15 项目: recycler-fast-scroll   文件: Utils.java
public static float getViewRawX(View view) {
    int[] location = new int[2];
    location[0] = (int) view.getX();
    location[1] = 0;
    ((View)view.getParent()).getLocationInWindow(location);
    return location[0];
}
 
源代码16 项目: DanDanPlayForAndroid   文件: SwitchThemeAnimView.java
/**
 * 获取view在屏幕中的绝对x坐标
 */
private static float getAbsoluteX(View view) {
    float x = view.getX();
    ViewParent parent = view.getParent();
    if (parent instanceof View) {
        x += getAbsoluteX((View) parent);
    }
    return x;
}
 
源代码17 项目: owt-client-android   文件: CallFragment.java
@Override
public boolean onTouch(View v, MotionEvent event) {
    if (v.getId() == R.id.small_renderer) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                dX = v.getX() - event.getRawX();
                dY = v.getY() - event.getRawY();
                break;
            case MotionEvent.ACTION_MOVE:
                v.animate()
                        .x(event.getRawX() + dX)
                        .y(event.getRawY() + dY)
                        .setDuration(0)
                        .start();
                break;
            case MotionEvent.ACTION_UP:
                v.animate()
                        .x(event.getRawX() + dX >= event.getRawY() + dY ? event.getRawX()
                                + dX : 0)
                        .y(event.getRawX() + dX >= event.getRawY() + dY ? 0
                                : event.getRawY() + dY)
                        .setDuration(10)
                        .start();
                break;
        }
    }
    return true;
}
 
源代码18 项目: Mover   文件: ViewHelper.java
static float getX(View view) {
    return view.getX();
}
 
源代码19 项目: KJFrameForAndroid   文件: ViewHelper.java
static float getX(View view) {
    return view.getX();
}
 
@Override
protected void getProperty(View view, float[] returnValues) {
  returnValues[0] = view.getX() + 0.5f * view.getWidth();
  returnValues[1] = view.getY() + 0.5f * view.getHeight();
}
 
 方法所在类
 同类方法