List of usage examples for android.view View getLocationOnScreen
@ViewDebug.ExportedProperty(category = "layout", indexMapping = { @ViewDebug.IntToString(from = 0, to = "x"), @ViewDebug.IntToString(from = 1, to = "y") }) @UnsupportedAppUsage public int[] getLocationOnScreen()
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); }