Search in sources :

Example 91 with ViewTreeObserver

use of android.view.ViewTreeObserver in project JustAndroid by chinaltz.

the class WeChatCircleActivity method setViewTreeObserver.

private void setViewTreeObserver() {
    bodyLayout = (RelativeLayout) findViewById(R.id.bodyLayout);
    final ViewTreeObserver swipeRefreshLayoutVTO = bodyLayout.getViewTreeObserver();
    swipeRefreshLayoutVTO.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            Rect r = new Rect();
            bodyLayout.getWindowVisibleDisplayFrame(r);
            //状态栏高度
            int statusBarH = getStatusBarHeight();
            int screenH = bodyLayout.getRootView().getHeight();
            if (r.top != statusBarH) {
                //在这个demo中r.top代表的是状态栏高度,在沉浸式状态栏时r.top=0,通过getStatusBarHeight获取状态栏高度
                r.top = statusBarH;
            }
            int keyboardH = screenH - (r.bottom - r.top);
            if (keyboardH == currentKeyboardH) {
                //有变化时才处理,否则会陷入死循环
                return;
            }
            currentKeyboardH = keyboardH;
            //应用屏幕的高度
            screenHeight = screenH;
            editTextBodyHeight = edittextbody.getHeight();
            if (keyboardH < 150) {
                //说明是隐藏键盘的情况
                return;
            }
            //偏移listview
            if (layoutManager != null && commentConfig != null) {
                layoutManager.scrollToPositionWithOffset(commentConfig.circlePosition + CircleAdapter.HEADVIEW_SIZE, getListviewOffset(commentConfig));
            }
        }
    });
}
Also used : Rect(android.graphics.Rect) ViewTreeObserver(android.view.ViewTreeObserver)

Example 92 with ViewTreeObserver

use of android.view.ViewTreeObserver in project android_frameworks_base by crdroidandroid.

the class ListViewAddRemove method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view_add_remove);
    final LinearLayout container = (LinearLayout) findViewById(R.id.container);
    final ListView listview = (ListView) findViewById(R.id.listview);
    for (int i = 0; i < 200; ++i) {
        numList.add(Integer.toString(i));
    }
    final StableArrayAdapter adapter = new StableArrayAdapter(this, android.R.layout.simple_list_item_1, numList);
    listview.setAdapter(adapter);
    final ViewTreeObserver observer = container.getViewTreeObserver();
    observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        public void onGlobalLayout() {
            System.out.println("-------------------------------------");
            System.out.println("onLayoutListener: listview view tops: ");
            for (int i = 0; i < listview.getChildCount(); ++i) {
                TextView view = (TextView) listview.getChildAt(i);
                System.out.println("    " + view.getText() + ": " + view.getTop());
            }
        }
    });
    final Scene mySceneChanger = new Scene(listview);
    mySceneChanger.setEnterAction(new Runnable() {

        @Override
        public void run() {
            numList.remove(mItemToDelete);
            adapter.notifyDataSetChanged();
        }
    });
    final Transition myTransition = new AutoTransition();
    final TransitionSet noFadeIn = new TransitionSet().setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
    Fade fadeIn = new Fade(Fade.IN);
    fadeIn.setDuration(50);
    noFadeIn.addTransition(new Fade(Fade.OUT)).addTransition(new ChangeBounds()).addTransition(fadeIn);
    myTransition.addListener(new Transition.TransitionListenerAdapter() {

        @Override
        public void onTransitionStart(Transition transition) {
            System.out.println("---------ListView Tops: Before--------");
            for (int i = 0; i < listview.getChildCount(); ++i) {
                TextView view = (TextView) listview.getChildAt(i);
                int position = listview.getPositionForView(view);
            }
        }

        @Override
        public void onTransitionEnd(Transition transition) {
            System.out.println("---------ListView Tops: After--------");
            for (int i = 0; i < listview.getChildCount(); ++i) {
                TextView view = (TextView) listview.getChildAt(i);
                int position = listview.getPositionForView(view);
                if (view.hasTransientState()) {
                //                        view.setHasTransientState(false);
                }
            }
            myTransition.removeListener(this);
        }
    });
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
            System.out.println("---------ListView Tops: OnClick--------");
            String item = (String) parent.getItemAtPosition(position);
            for (int i = 0; i < listview.getChildCount(); ++i) {
                TextView v = (TextView) listview.getChildAt(i);
                if (!item.equals(v.getText())) {
                //                        v.setHasTransientState(true);
                }
            }
            //                listview.setHasTransientState(true);
            mItemToDelete = item;
            //                numList.remove(item);
            TransitionManager.go(mySceneChanger, noFadeIn);
        //                view.postDelayed(new Runnable() {
        //                    @Override
        //                    public void run() {
        //                        for (int i = 0; i < listview.getChildCount(); ++i) {
        //                            TextView v = (TextView) listview.getChildAt(i);
        //                            v.setHasTransientState(false);
        //                        }
        //                    }
        //                }, 200);
        }
    });
}
Also used : AutoTransition(android.transition.AutoTransition) ChangeBounds(android.transition.ChangeBounds) Scene(android.transition.Scene) TextView(android.widget.TextView) View(android.view.View) AdapterView(android.widget.AdapterView) ListView(android.widget.ListView) ListView(android.widget.ListView) TransitionSet(android.transition.TransitionSet) AutoTransition(android.transition.AutoTransition) Transition(android.transition.Transition) TextView(android.widget.TextView) AdapterView(android.widget.AdapterView) ViewTreeObserver(android.view.ViewTreeObserver) Fade(android.transition.Fade) LinearLayout(android.widget.LinearLayout)

Example 93 with ViewTreeObserver

use of android.view.ViewTreeObserver in project little-bear-dictionary by daimajia.

the class ActivityChooserView method onDetachedFromWindow.

@Override
protected void onDetachedFromWindow() {
    super.onDetachedFromWindow();
    ActivityChooserModel dataModel = mAdapter.getDataModel();
    if (dataModel != null) {
        try {
            dataModel.unregisterObserver(mModelDataSetOberver);
        } catch (IllegalStateException e) {
        //Oh, well... fixes issue #557
        }
    }
    ViewTreeObserver viewTreeObserver = getViewTreeObserver();
    if (viewTreeObserver.isAlive()) {
        viewTreeObserver.removeGlobalOnLayoutListener(mOnGlobalLayoutListener);
    }
    mIsAttachedToWindow = false;
}
Also used : ViewTreeObserver(android.view.ViewTreeObserver)

Example 94 with ViewTreeObserver

use of android.view.ViewTreeObserver in project android_frameworks_base by AOSPA.

the class Editor method onAttachedToWindow.

void onAttachedToWindow() {
    if (mShowErrorAfterAttach) {
        showError();
        mShowErrorAfterAttach = false;
    }
    final ViewTreeObserver observer = mTextView.getViewTreeObserver();
    // The get method will add the listener on controller creation.
    if (mInsertionPointCursorController != null) {
        observer.addOnTouchModeChangeListener(mInsertionPointCursorController);
    }
    if (mSelectionModifierCursorController != null) {
        mSelectionModifierCursorController.resetTouchOffsets();
        observer.addOnTouchModeChangeListener(mSelectionModifierCursorController);
    }
    updateSpellCheckSpans(0, mTextView.getText().length(), true);
    if (mTextView.hasSelection()) {
        refreshTextActionMode();
    }
    getPositionListener().addSubscriber(mCursorAnchorInfoNotifier, true);
    resumeBlink();
}
Also used : ViewTreeObserver(android.view.ViewTreeObserver)

Example 95 with ViewTreeObserver

use of android.view.ViewTreeObserver in project android_frameworks_base by AOSPA.

the class Spinner method onRestoreInstanceState.

@Override
public void onRestoreInstanceState(Parcelable state) {
    SavedState ss = (SavedState) state;
    super.onRestoreInstanceState(ss.getSuperState());
    if (ss.showDropdown) {
        ViewTreeObserver vto = getViewTreeObserver();
        if (vto != null) {
            final OnGlobalLayoutListener listener = new OnGlobalLayoutListener() {

                @Override
                public void onGlobalLayout() {
                    if (!mPopup.isShowing()) {
                        mPopup.show(getTextDirection(), getTextAlignment());
                    }
                    final ViewTreeObserver vto = getViewTreeObserver();
                    if (vto != null) {
                        vto.removeOnGlobalLayoutListener(this);
                    }
                }
            };
            vto.addOnGlobalLayoutListener(listener);
        }
    }
}
Also used : OnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener) ViewTreeObserver(android.view.ViewTreeObserver)

Aggregations

ViewTreeObserver (android.view.ViewTreeObserver)222 View (android.view.View)56 OnGlobalLayoutListener (android.view.ViewTreeObserver.OnGlobalLayoutListener)25 ImageView (android.widget.ImageView)25 TextView (android.widget.TextView)15 ViewGroup (android.view.ViewGroup)14 SuppressLint (android.annotation.SuppressLint)13 AdapterView (android.widget.AdapterView)12 TypedArray (android.content.res.TypedArray)7 Test (org.junit.Test)7 RectF (android.graphics.RectF)6 DisplayMetrics (android.util.DisplayMetrics)6 ViewParent (android.view.ViewParent)6 LinearLayout (android.widget.LinearLayout)6 ListView (android.widget.ListView)6 Resources (android.content.res.Resources)5 ValueAnimator (android.animation.ValueAnimator)4 TargetApi (android.annotation.TargetApi)4 Activity (android.app.Activity)4 Paint (android.graphics.Paint)4