@TargetApi(Build.VERSION_CODES.LOLLIPOP) private void backgroundCircularRevealAnimation(View clickedView, final int newColor) { int centerX = (int) (ViewCompat.getX(clickedView) + (clickedView.getMeasuredWidth() / 2)); int yOffset = isTabletMode ? (int) ViewCompat.getY(clickedView) : 0; int centerY = yOffset + clickedView.getMeasuredHeight() / 2;
final float childX = ViewCompat.getX(firstOffsetChild); if (floorDiff > 0.5f) { if (childX < -10){
@Override public boolean onPreDraw() { //rotation fix, if not set, originalTitleY = Na ViewCompat.setTranslationY(mLogo,0); ViewCompat.setTranslationX(mLogo, 0); originalTitleY = ViewCompat.getY(mLogo); originalTitleX = ViewCompat.getX(mLogo); originalTitleHeight = mLogo.getHeight(); finalTitleHeight = dpToPx(21, context); //the final scale of the logo finalScale = finalTitleHeight / originalTitleHeight; finalTitleY = (toolbar.getPaddingTop() + toolbar.getHeight()) / 2 - finalTitleHeight / 2 - (1 - finalScale) * finalTitleHeight; //(mLogo.getWidth()/2) *(1-finalScale) is the margin left added by the scale() on the logo //when logo scaledown, the content stay in center, so we have to anually remove the left padding finalTitleX = dpToPx(52f, context) - (mLogo.getWidth() / 2) * (1 - finalScale); toolbarLayout.getViewTreeObserver().removeOnPreDrawListener(this); return false; } });
public float getX() { return ViewCompat.getX(view); }
float getX(View view) { Rect rect = new Rect(); view.getGlobalVisibleRect(rect); float x = rect.left; if (x <= 0) { x = ViewCompat.getX(view); } return x; }
/** * 获取当前view的x坐标 实际值= translationX + getLeft * @return */ public float getX() { return ViewCompat.getX(view); }
public static float getX(final @NonNull View v) { if (Build.VERSION.SDK_INT >= 11) { return ViewCompat.getX(v); } else { return ((LinearLayout.LayoutParams) v.getLayoutParams()).leftMargin; } }
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });
@Override public void run() { int mScrollX = tabContainer.getScrollX(); int childX = (int)ViewCompat.getX(tabContainer.getChildAt(position)); if(childX < mScrollX){ scrollView.scrollTo(childX,0); return; } int childWidth = (int)tabContainer.getChildAt(position).getWidth(); int hsvWidth = scrollView.getWidth(); int childRight = childX + childWidth; int scrollRight = mScrollX + hsvWidth; if(childRight > scrollRight){ scrollView.scrollTo(childRight - scrollRight,0); return; } } });