Example usage for android.view View getLocationOnScreen

List of usage examples for android.view View getLocationOnScreen

Introduction

In this page you can find the example usage for android.view View getLocationOnScreen.

Prototype

@ViewDebug.ExportedProperty(category = "layout", indexMapping = { @ViewDebug.IntToString(from = 0, to = "x"),
        @ViewDebug.IntToString(from = 1, to = "y") })
@UnsupportedAppUsage
public int[] getLocationOnScreen() 

Source Link

Usage

From source file:com.android.systemui.qs.QSDragPanel.java

@Override
protected void setupViews() {
    updateResources();//from  w w  w . j  av a  2  s .c o  m

    mDetail = LayoutInflater.from(mContext).inflate(R.layout.qs_detail, this, false);
    mDetailButtons = (ViewGroup) mDetail.findViewById(R.id.buttons);
    mDetailContent = (ViewGroup) mDetail.findViewById(android.R.id.content);
    mDetailRemoveButton = (TextView) mDetail.findViewById(android.R.id.button3);
    mDetailSettingsButton = (TextView) mDetail.findViewById(android.R.id.button2);
    mDetailDoneButton = (TextView) mDetail.findViewById(android.R.id.button1);
    updateDetailText();
    mDetail.setVisibility(GONE);
    mDetail.setClickable(true);

    mQsPanelTop = (QSPanelTopView) LayoutInflater.from(mContext).inflate(R.layout.qs_tile_top, this, false);

    mBrightnessView = mQsPanelTop.getBrightnessView();
    mFooter = new QSFooter(this, mContext);

    // add target click listener
    mQsPanelTop.getAddTarget().setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            TilesListAdapter adapter = new TilesListAdapter(mContext, QSDragPanel.this);
            showDetailAdapter(true, adapter, v.getLocationOnScreen());
            mDetail.bringToFront();
        }
    });
    mViewPager = new QSViewPager(getContext());
    mViewPager.setDragPanel(this);

    mPageIndicator = new CirclePageIndicator(getContext());
    addView(mDetail);
    addView(mQsPanelTop);
    addView(mViewPager);
    addView(mPageIndicator);
    addView(mFooter.getView());

    mClipper = new QSDetailClipper(mDetail);

    mBrightnessController = new BrightnessController(getContext(),
            (ImageView) mQsPanelTop.getBrightnessView().findViewById(R.id.brightness_icon),
            (ToggleSlider) mQsPanelTop.getBrightnessView().findViewById(R.id.brightness_slider));

    mDetailDoneButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            announceForAccessibility(mContext.getString(R.string.accessibility_desc_quick_settings));
            closeDetail();
        }
    });

    mPagerAdapter = new PagerAdapter() {
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            if (DEBUG_TILES) {
                Log.d(TAG, "instantiateItem() called with " + "container = [" + container + "], position = ["
                        + position + "]");
            }

            if (mEditing && position == 0) {
                QSSettings qss = (QSSettings) View.inflate(container.getContext(), R.layout.qs_settings, null);
                qss.setHost(mHost);
                container.addView(qss, 0);
                return qss;
            } else {
                final int adjustedPosition = mEditing ? position - 1 : position;
                QSPage page = mPages.get(adjustedPosition);
                if (!page.isAttachedToWindow()) {
                    container.addView(page);
                }
                return page;
            }
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            if (DEBUG_TILES) {
                Log.d(TAG, "destroyItem() called with " + "container = [" + container + "], position = ["
                        + position + "], object = [" + object + "]");
            }
            if (object instanceof View) {
                container.removeView((View) object);
            }
        }

        @Override
        public int getItemPosition(Object object) {
            if (object instanceof QSPage) {
                if (mEditing != ((QSPage) object).getAdapterEditingState()) {
                    // position of item changes when we set change the editing mode,
                    // sync it and send the new position
                    ((QSPage) object).setAdapterEditingState(mEditing);

                    // calculate new position
                    int indexOf = ((QSPage) object).getPageIndex();
                    if (mEditing)
                        return indexOf + 1;
                    else
                        return indexOf;

                } else if (!mPages.contains(object) && !mDragging) {
                    // only return none if we aren't dragging (object may be removed from
                    // the records array temporarily and we might think we have less pages,
                    // we don't want to prematurely remove this page
                    return POSITION_NONE;
                } else {

                    return POSITION_UNCHANGED;
                }

            } else if (object instanceof QSSettings) {
                if (((QSSettings) object).getAdapterEditingState() != mEditing) {
                    ((QSSettings) object).setAdapterEditingState(mEditing);
                    if (mEditing)
                        return 0 /* locked at position 0 */;
                    else
                        return POSITION_NONE;
                } else {
                    return POSITION_UNCHANGED;
                }
            }
            return super.getItemPosition(object);
        }

        @Override
        public int getCount() {
            final int qsPages = Math.max(getCurrentMaxPageCount(), 1);

            if (mPages != null && qsPages > mPages.size()) {
                for (int i = mPages.size(); i < qsPages; i++) {
                    mPages.add(i, new QSPage(mViewPager.getContext(), QSDragPanel.this, i));
                }
            }

            if (mEditing)
                return qsPages + 1;
            return qsPages;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    };
    mViewPager.setAdapter(mPagerAdapter);

    mPageIndicator.setViewPager(mViewPager);
    mPageIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (DEBUG_DRAG) {
                Log.i(TAG, "onPageScrolled() called with " + "position = [" + position + "], positionOffset = ["
                        + positionOffset + "], positionOffsetPixels = [" + positionOffsetPixels + "]");
            }

            if (mEditing) {
                float targetTranslationX = 0;

                // targetTranslationX = where it's supposed to be - diff
                int homeLocation = mViewPager.getMeasuredWidth();

                // how far away from homeLocation is the scroll?
                if (positionOffsetPixels < homeLocation && position == 0) {
                    targetTranslationX = homeLocation - positionOffsetPixels;
                }
                mQsPanelTop.setTranslationX(targetTranslationX);
            }
        }

        @Override
        public void onPageSelected(int position) {
            if (mDragging && position != mDraggingRecord.page && !mViewPager.isFakeDragging() && !mRestoring) {
                if (DEBUG_DRAG) {
                    Log.w(TAG, "moving drag record to page: " + position);
                }

                // remove it from the previous page and add it here
                final QSPage sourceP = getPage(mDraggingRecord.page);
                final QSPage targetP = getPage(position);

                sourceP.removeView(mDraggingRecord.tileView);
                mDraggingRecord.page = position;
                targetP.addView(mDraggingRecord.tileView);

                // set coords off screen until we're ready to place it
                mDraggingRecord.tileView.setX(-mDraggingRecord.tileView.getMeasuredWidth());
                mDraggingRecord.tileView.setY(-mDraggingRecord.tileView.getMeasuredHeight());
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    mViewPager.setOverScrollMode(OVER_SCROLL_NEVER);

    setClipChildren(false);

    mSettingsObserver = new SettingsObserver(new Handler());

    mViewPager.setOnDragListener(QSDragPanel.this);
    mQsPanelTop.setOnDragListener(QSDragPanel.this);
    mPageIndicator.setOnDragListener(QSDragPanel.this);
    setOnDragListener(QSDragPanel.this);

    mViewPager.setOverScrollMode(View.OVER_SCROLL_NEVER);
}