Java Code Examples for android.view.View#getTop()
The following examples show how to use
android.view.View#getTop() .
These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: youqu_master File: PullBackLayout.java License: Apache License 2.0 | 6 votes |
@Override public void onViewReleased(View releasedChild, float xvel, float yvel) { int slop = yvel > minimumFlingVelocity ? getHeight() / 6 : getHeight() / 3; if (releasedChild.getTop() > slop) { if (callback != null) { callback.onPullComplete(); } } else { if (callback != null) { callback.onPullCancel(); } dragger.settleCapturedViewAt(0, 0); invalidate(); } }
Example 2
Source Project: iBeebo File: MentionsCommentTimeLineFragment.java License: GNU General Public License v3.0 | 6 votes |
protected void onMiddleMsgLoaderSuccessCallback(int position, CommentListBean newValue, boolean towardsBottom) { if (newValue != null) { int size = newValue.getSize(); if (getActivity() != null && newValue.getSize() > 0) { getDataList().addMiddleData(position, newValue, towardsBottom); if (towardsBottom) { getAdapter().notifyDataSetChanged(); } else { View v = Utility.getListViewItemViewFromPosition(getListView(), position + 1 + 1); int top = (v == null) ? 0 : v.getTop(); getAdapter().notifyDataSetChanged(); int ss = position + 1 + size - 1; getListView().setSelectionFromTop(ss, top); } } } }
Example 3
Source Project: light-novel-library_Wenku8_Android File: PullToZoomListViewEx.java License: GNU General Public License v2.0 | 6 votes |
private boolean isFirstItemVisible() { final Adapter adapter = mRootView.getAdapter(); if (null == adapter || adapter.isEmpty()) { return true; } else { /** * This check should really just be: * mRootView.getFirstVisiblePosition() == 0, but PtRListView * internally use a HeaderView which messes the positions up. For * now we'll just add one to account for it and rely on the inner * condition which checks getTop(). */ if (mRootView.getFirstVisiblePosition() <= 1) { final View firstVisibleChild = mRootView.getChildAt(0); if (firstVisibleChild != null) { return firstVisibleChild.getTop() >= mRootView.getTop(); } } } return false; }
Example 4
Source Project: KlyphMessenger File: SlidingPaneLayout.java License: MIT License | 6 votes |
/** * Tests scrollability within child views of v given a delta of dx. * * @param v View to test for horizontal scrollability * @param checkV Whether the view v passed should itself be checked for scrollability (true), * or just its children (false). * @param dx Delta scrolled in pixels * @param x X coordinate of the active touch point * @param y Y coordinate of the active touch point * @return true if child views of v can be scrolled by delta of dx. */ protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { if (v instanceof ViewGroup) { final ViewGroup group = (ViewGroup) v; final int scrollX = v.getScrollX(); final int scrollY = v.getScrollY(); final int count = group.getChildCount(); // Count backwards - let topmost views consume scroll distance first. for (int i = count - 1; i >= 0; i--) { // TODO: Add versioned support here for transformed views. // This will not work for transformed views in Honeycomb+ final View child = group.getChildAt(i); if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() && y + scrollY >= child.getTop() && y + scrollY < child.getBottom() && canScroll(child, true, dx, x + scrollX - child.getLeft(), y + scrollY - child.getTop())) { return true; } } } return checkV && ViewCompat.canScrollHorizontally(v, -dx); }
Example 5
Source Project: container File: PendIntentCompat.java License: GNU General Public License v3.0 | 6 votes |
private Rect getRect(View view) { Rect rect = new Rect(); rect.top = view.getTop(); rect.left = view.getLeft(); rect.right = view.getRight(); rect.bottom = view.getBottom(); ViewParent viewParent = view.getParent(); if (viewParent != null) { if (viewParent instanceof ViewGroup) { Rect prect = getRect((ViewGroup) viewParent); rect.top += prect.top; rect.left += prect.left; rect.right += prect.left; rect.bottom += prect.top; } } return rect; }
Example 6
Source Project: ZhiHu-TopAnswer File: HeaderPositionCalculator.java License: Apache License 2.0 | 5 votes |
/** * Determines if an item is obscured by a header * * * @param parent * @param item to determine if obscured by header * @param header that might be obscuring the item * @param orientation of the {@link RecyclerView} * @return true if the item view is obscured by the header view */ private boolean itemIsObscuredByHeader(RecyclerView parent, View item, View header, int orientation) { RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) item.getLayoutParams(); mDimensionCalculator.initMargins(mTempRect1, header); int adapterPosition = parent.getChildAdapterPosition(item); if (adapterPosition == RecyclerView.NO_POSITION || mHeaderProvider.getHeader(parent, adapterPosition) != header) { // Resolves https://github.com/timehop/sticky-headers-recyclerview/issues/36 // Handles an edge case where a trailing header is smaller than the current sticky header. return false; } if (orientation == LinearLayoutManager.VERTICAL) { int itemTop = item.getTop() - layoutParams.topMargin; int headerBottom = header.getBottom() + mTempRect1.bottom + mTempRect1.top; if (itemTop > headerBottom) { return false; } } else { int itemLeft = item.getLeft() - layoutParams.leftMargin; int headerRight = header.getRight() + mTempRect1.right + mTempRect1.left; if (itemLeft > headerRight) { return false; } } return true; }
Example 7
Source Project: PullRefreshView File: ViewScrollUtil.java License: Apache License 2.0 | 5 votes |
@Override public int getScrollY() { int firstVisiblePosition = absListView.getFirstVisiblePosition(); View c = absListView.getChildAt(0); if (c == null) { return 0; } int top = c.getTop() - absListView.getPaddingTop(); return -top + firstVisiblePosition * c.getHeight(); }
Example 8
Source Project: ALLGO File: PullToRefreshLayout.java License: Apache License 2.0 | 5 votes |
private View getChildForTouchEvent(MotionEvent event) { final float x = event.getX(), y = event.getY(); View child; for (int z = getChildCount() - 1; z >= 0 ; z--) { child = getChildAt(z); if (child.isShown() && x >= child.getLeft() && x <= child.getRight() && y >= child.getTop() && y <= child.getBottom()) { if (DEBUG) Log.d(LOG_TAG, "Got Child for Touch Event: " + child); return child; } } return null; }
Example 9
Source Project: PinnedSectionItemDecoration File: DividerHelper.java License: Apache License 2.0 | 5 votes |
public static void drawLeftAlignItem(Canvas canvas, Drawable drawable, View child, ViewGroup.MarginLayoutParams params) { final int top = child.getTop() - params.topMargin; final int bottom = child.getBottom() + params.bottomMargin; final int left = child.getLeft() - params.leftMargin - drawable.getIntrinsicWidth(); final int right = left + drawable.getIntrinsicWidth(); drawable.setBounds(left, top, right, bottom); drawable.draw(canvas); }
Example 10
Source Project: AndroidAnimationExercise File: NestedScrollView.java License: Apache License 2.0 | 5 votes |
private boolean inChild(int x, int y) { if (getChildCount() > 0) { final int scrollY = getScrollY(); final View child = getChildAt(0); return !(y < child.getTop() - scrollY || y >= child.getBottom() - scrollY || x < child.getLeft() || x >= child.getRight()); } return false; }
Example 11
Source Project: BaseRecyclerViewAdapterHelper File: GridItemDecoration.java License: MIT License | 5 votes |
/** * @param c * @param parent * @param state */ @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { if (dividerDrawable == null) { return; } int childCount = parent.getChildCount(); int rightV = parent.getWidth(); for (int i = 0; i < childCount; i++) { View child = parent.getChildAt(i); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); int leftV = parent.getPaddingLeft() + child.getPaddingLeft(); int bottomV = child.getTop() - params.topMargin; int topV = bottomV - dividerDrawable.getIntrinsicHeight(); int topH = child.getTop() + params.topMargin; int bottomH = child.getBottom() + params.bottomMargin; int rightH = child.getLeft() - params.leftMargin; int leftH = rightH - dividerDrawable.getIntrinsicWidth(); dividerDrawable.setBounds(leftH, topH, rightH, bottomH); dividerDrawable.draw(c); dividerDrawable.setBounds(leftV, topV, rightV, bottomV); dividerDrawable.draw(c); } }
Example 12
Source Project: LB-Launcher File: PagedView.java License: Apache License 2.0 | 5 votes |
float[] mapPointFromViewToParent(View v, float x, float y) { mTmpPoint[0] = x; mTmpPoint[1] = y; v.getMatrix().mapPoints(mTmpPoint); mTmpPoint[0] += v.getLeft(); mTmpPoint[1] += v.getTop(); return mTmpPoint; }
Example 13
Source Project: KlyphMessenger File: AbsListViewDelegate.java License: MIT License | 5 votes |
@Override public boolean isReadyForPull(View view, final float x, final float y) { boolean ready = false; // First we check whether we're scrolled to the top AbsListView absListView = (AbsListView) view; if (absListView.getCount() == 0) { ready = true; } else if (absListView.getFirstVisiblePosition() == 0) { final View firstVisibleChild = absListView.getChildAt(0); ready = firstVisibleChild != null && firstVisibleChild.getTop() >= 0; } // Then we have to check whether the fas scroller is enabled, and check we're not starting // the gesture from the scroller if (ready && absListView.isFastScrollEnabled() && isFastScrollAlwaysVisible(absListView)) { switch (getVerticalScrollbarPosition(absListView)) { case View.SCROLLBAR_POSITION_RIGHT: ready = x < absListView.getRight() - absListView.getVerticalScrollbarWidth(); break; case View.SCROLLBAR_POSITION_LEFT: ready = x > absListView.getVerticalScrollbarWidth(); break; } } return ready; }
Example 14
Source Project: MaterialDateRangePicker File: YearPickerView.java License: Apache License 2.0 | 5 votes |
public int getFirstPositionOffset() { final View firstChild = getChildAt(0); if (firstChild == null) { return 0; } return firstChild.getTop(); }
Example 15
Source Project: UltimateSwipeTool File: ViewDragHelper.java License: Apache License 2.0 | 5 votes |
/** * Tests scrollability within child views of v given a delta of dx. * * @param v View to test for horizontal scrollability * @param checkV Whether the view v passed should itself be checked for * scrollability (true), or just its children (false). * @param dx Delta scrolled in pixels along the X axis * @param dy Delta scrolled in pixels along the Y axis * @param x X coordinate of the active touch point * @param y Y coordinate of the active touch point * @return true if child views of v can be scrolled by delta of dx. */ protected boolean canScroll(View v, boolean checkV, int dx, int dy, int x, int y) { if (v instanceof ViewGroup) { final ViewGroup group = (ViewGroup) v; final int scrollX = v.getScrollX(); final int scrollY = v.getScrollY(); final int count = group.getChildCount(); // Count backwards - let topmost views consume scroll distance // first. for (int i = count - 1; i >= 0; i--) { // TODO: Add versioned support here for transformed views. // This will not work for transformed views in Honeycomb+ final View child = group.getChildAt(i); if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() && y + scrollY >= child.getTop() && y + scrollY < child.getBottom() && canScroll(child, true, dx, dy, x + scrollX - child.getLeft(), y + scrollY - child.getTop())) { return true; } } } return checkV && (ViewCompat.canScrollHorizontally(v, -dx) || ViewCompat.canScrollVertically(v, -dy)); }
Example 16
Source Project: StickyListHeadersWithRefreshAndLoadMore File: SwipeLayout.java License: Apache License 2.0 | 5 votes |
/** * close surface * * @param smooth smoothly or not. * @param notify if notify all the listeners. */ public void close(boolean smooth, boolean notify) { View surface = getSurfaceView(); View bottomView = getCurrentBottomView(); if (surface == null) { return; } Rect rect = computeSurfaceLayoutArea(false); int dx, dy; if (smooth) { mDragHelper.smoothSlideViewTo(getSurfaceView(), rect.left, rect.top); mDragHelper.smoothSlideViewTo(bottomView, rect.right, rect.top); } else { int measuredWidth = bottomView.getMeasuredWidth(); dx = rect.left - surface.getLeft(); dy = rect.top - surface.getTop(); surface.layout(rect.left, rect.top, rect.right, rect.bottom); bottomView.layout(rect.right, rect.top, rect.right + measuredWidth, rect.bottom); if (notify) { dispatchRevealEvent(rect.left, rect.top, rect.right, rect.bottom); dispatchSwipeEvent(rect.left, rect.top, dx, dy); } else { safeBottomView(); } } invalidate(); }
Example 17
Source Project: ticdesign File: AppBarLayout.java License: Apache License 2.0 | 5 votes |
private View getChildOnOffset(AppBarLayout abl, final int offset) { for (int i = 0, count = abl.getChildCount(); i < count; i++) { View child = abl.getChildAt(i); if (child.getTop() <= -offset && child.getBottom() >= -offset) { return child; } } return null; }
Example 18
Source Project: quickmark File: PieView.java License: MIT License | 4 votes |
@Override public boolean onTouch(View v, MotionEvent event) { boolean enable = true; float x = centerPoint.x; float y = centerPoint.y; float y1 = event.getY(); float x1 = event.getX(); float x2 = v.getLeft(); float y2 = v.getTop(); float x3 = x1 - x2; float y3 = y1 - y2; if (event.getAction() == MotionEvent.ACTION_DOWN) { m_x = x3; m_y = y3; tounched = true; } if (event.getAction() == MotionEvent.ACTION_UP) { m_x = 0; m_y = 0; tounched = false; } float d = (float) Math.sqrt((Math.pow(Math.abs((x - x3)), 2) + Math .pow(Math.abs((y - y3)), 2))); if (d > radius) { m_x = 0; m_y = 0; enable = false; } if (event.getAction() == MotionEvent.ACTION_MOVE) { if ((m_x == 0) && (m_y == 0)) { enable = false; } if (enable) { float c = (float) Math .sqrt((Math.pow(Math.abs((m_x - x3)), 2) + Math.pow( Math.abs((m_y - y3)), 2))); float a = (float) Math .sqrt((Math.pow(Math.abs(m_x - x), 2) + Math.pow( Math.abs((m_y - y)), 2))); float b = (float) Math .sqrt((Math.pow(Math.abs(x3 - x), 2) + Math.pow( Math.abs((y3 - y)), 2))); float cosc = (float) (Math.pow(a, 2) + Math.pow(b, 2) - Math .pow(c, 2)) / (2 * a * b); float m_angle = getAngle((m_x - x), (m_y - y)); float angle3 = getAngle((x3 - x), (y3 - y)); if ((90 > m_angle) && (angle3 > 270)) { m_angle = m_angle + (float) 360; } if ((90 > angle3) && (m_angle > 270)) { angle3 = angle3 + (float) 360; } if (angle3 - m_angle > 0) { startAngle = (float) (startAngle + Math.acos(cosc) * 180 / Math.PI); } else { startAngle = (float) (startAngle - Math.acos(cosc) * 180 / Math.PI); } m_x = x3; m_y = y3; } } return true; }
Example 19
Source Project: Expert-Android-Programming File: HomeActivity.java License: MIT License | 4 votes |
private int getRelativeTop(View myView) { if (myView.getParent() == myView.getRootView()) return myView.getTop(); else return myView.getTop() + getRelativeTop((View) myView.getParent()); }
Example 20
Source Project: PinnedSectionItemDecoration File: SmallPinnedHeaderItemDecoration.java License: Apache License 2.0 | 4 votes |
@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { if (mEnableDivider) { drawDivider(c, parent); } // 只支持LinearLayoutManager或者GridLayoutManager且一行只有一列的情况,这个比较符合使用场景 if (parent.getLayoutManager() instanceof GridLayoutManager && ((GridLayoutManager) parent.getLayoutManager()).getSpanCount() > 1) { return; } else if (parent.getLayoutManager() instanceof StaggeredGridLayoutManager) { return; } // 检测到标签存在的时候,将标签强制固定在RecyclerView顶部 createPinnedHeader(parent); if (!mDisableDrawHeader && mPinnedHeaderView != null && mFirstVisiblePosition >= mHeaderPosition) { // 标签相对parent高度加上自身的高度 final int headerEndAt = mPinnedHeaderParentView.getTop() + mPinnedHeaderParentView.getMeasuredHeight() + mRecyclerViewPaddingTop; // 根据xy坐标查找view View v = parent.findChildViewUnder(c.getWidth() / 2, headerEndAt + 1); if (isPinnedHeader(parent, v) && v.getTop() <= mPinnedHeaderView.getHeight() + mRecyclerViewPaddingTop + mParentPaddingTop) { // 如果view是标签的话,那么缓存的标签就要跟随这个真正的标签标签移动了,效果类似于下面的标签把它顶上去一样 // 得到mPinnedHeaderView为标签跟随移动的位移 mPinnedHeaderOffset = v.getTop() - (mRecyclerViewPaddingTop + mParentPaddingTop + mPinnedHeaderView.getHeight()); } else { mPinnedHeaderOffset = 0; } // Log.e("TAG", "SmallPinnedHeaderItemDecoration-152行-onDraw(): " + v.getTop() + ";" + mPinnedHeaderOffset); // 拿到锁定的矩形 mClipBounds = c.getClipBounds(); mClipBounds.left = 0; mClipBounds.right = parent.getWidth(); mClipBounds.top = mRecyclerViewPaddingTop + mParentPaddingTop; mClipBounds.bottom = parent.getHeight(); // 重新锁定 c.clipRect(mClipBounds); } }