类android.view.ViewTreeObserver源码实例Demo

下面列出了怎么用android.view.ViewTreeObserver的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: LEDView   文件: LEDView.java
private void init(){

        mHolder = getHolder();
        mHolder.addCallback(this);
        mThread = new HandlerThread("led-looper");
        mThread.start();
        mHandler = new Handler(mThread.getLooper());

        mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);


        getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                mLEDHight = getWidth();
                mLEDWidth = getHeight();
                Log.d("scott","   led size " + " h : " + mLEDHight + "   w : " + mLEDWidth);
                getViewTreeObserver().removeOnPreDrawListener(this);
                return false;
            }
        });
    }
 
源代码2 项目: RxTools-master   文件: AndroidBug5497Workaround.java
private AndroidBug5497Workaround(Activity activity) {
    //获取状态栏的高度
    int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
    statusBarHeight = activity.getResources().getDimensionPixelSize(resourceId);
    this.activity = activity;
    FrameLayout content = (FrameLayout)activity.findViewById(android.R.id.content);
    mChildOfContent = content.getChildAt(0);

    //界面出现变动都会调用这个监听事件
    mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        public void onGlobalLayout() {
            if (isfirst) {
                contentHeight = mChildOfContent.getHeight();//兼容华为等机型
                isfirst = false;
            }
            possiblyResizeChildOfContent();
        }
    });

    frameLayoutParams = (FrameLayout.LayoutParams)
            mChildOfContent.getLayoutParams();
}
 
@Nullable
@Override
public ViewTreeObserver.OnGlobalLayoutListener inflate(
    Map<Action, View.OnClickListener> actionListeners,
    View.OnClickListener dismissOnClickListener) {

  View root = inflater.inflate(R.layout.banner, null);
  bannerRoot = root.findViewById(R.id.banner_root);
  bannerContentRoot = root.findViewById(R.id.banner_content_root);
  bannerBody = root.findViewById(R.id.banner_body);
  bannerImage = root.findViewById(R.id.banner_image);
  bannerTitle = root.findViewById(R.id.banner_title);

  if (message.getMessageType().equals(MessageType.BANNER)) {
    BannerMessage bannerMessage = (BannerMessage) message;
    setMessage(bannerMessage);
    setLayoutConfig(config);
    setSwipeDismissListener(dismissOnClickListener);
    setActionListener(actionListeners.get(bannerMessage.getAction()));
  }
  return null;
}
 
源代码4 项目: citrus   文件: Utils.java
/**
 * Fix floating action button's layout bug.
 */
public static void setFabLayoutParams(final FloatingActionButton floatingActionButton,
        final OnCanSetLayoutParamsListener onCanSetLayoutParamsListener) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        ViewTreeObserver viewTreeObserver = floatingActionButton.getViewTreeObserver();
        if (viewTreeObserver.isAlive()) {
            viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                        floatingActionButton.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    } else {
                        floatingActionButton.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    }
                    onCanSetLayoutParamsListener.onCanSetLayoutParams();
                }
            });
        }
    }
}
 
public VH(View itemView) {
    super(itemView);
    iv = (ImageView) itemView.findViewById(R.id.iv);
    tv = (TextView) itemView.findViewById(R.id.tv);
    ivc = (HWRatioContainer) itemView.findViewById(R.id.ivc);
    ivc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                ivc.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            } else {
                ivc.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
            ivc.setTranslationX(ivc.getWidth() >> 4);
        }
    });

}
 
源代码6 项目: ViewUtils   文件: ExpandTextView.java
public void setText(CharSequence charSequence) {
    textContent = charSequence;
    textView.setText(charSequence.toString());
    ViewTreeObserver viewTreeObserver = textView.getViewTreeObserver();
    viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            if (!isInitTextView) {
                return true;
            }
            textLines = textView.getLineCount();
            isExpandNeeded = textLines > expandLines;
            isInitTextView = false;
            if (isExpandNeeded) {
                isShrink = true;
                doAnimation(textLines, expandLines, WHAT_ANIMATION_END);
            } else {
                isShrink = false;
                doNotExpand();
            }
            return true;
        }
    });

}
 
源代码7 项目: LoyalNativeSlider   文件: SliderAdapter.java
private void collectionConfiguration(final View layer, final int position) {
    if (mSetViewListener != null && enable_layout_observer) {
        layer.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int debug = layer.getHeight();
                Log.d("checkLayoutSlideHeight", debug + " px");
                measurement_height.append(position, layer.getHeight());
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    layer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }
                if (enable_layout_observer) {
                    mSetViewListener.onLayoutGenerated(measurement_height);
                }
            }
        });
    }
}
 
源代码8 项目: SprintNBA   文件: MatchLiveFragment.java
private void initData() {
    showLoadingDialog();
    mid = getArguments().getString("mid");
    adapter = new MatchLiveAdapter(list, mActivity, R.layout.item_list_match_live);
    lvMatchLive.setAdapter(adapter);
    lvMatchLive.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
                lvMatchLive.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            } else {
                lvMatchLive.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
            mListViewHeight = lvMatchLive.getHeight();
            lvMatchLive.setOnScrollListener(new OnLvScrollListener(mListViewHeight) {
                @Override
                public void onBottom() {
                    presenter.getMoreContent();
                }
            });
        }
    });
    presenter = new MatchLivePresenter(mActivity, this, mid);
}
 
源代码9 项目: giffun   文件: ViewTarget.java
public void getSize(SizeReadyCallback cb) {
    int currentWidth = getViewWidthOrParam();
    int currentHeight = getViewHeightOrParam();
    if (isSizeValid(currentWidth) && isSizeValid(currentHeight)) {
        cb.onSizeReady(currentWidth, currentHeight);
    } else {
        // We want to notify callbacks in the order they were added and we only expect one or two callbacks to
        // be added a time, so a List is a reasonable choice.
        if (!cbs.contains(cb)) {
            cbs.add(cb);
        }
        if (layoutListener == null) {
            final ViewTreeObserver observer = view.getViewTreeObserver();
            layoutListener = new SizeDeterminerLayoutListener(this);
            observer.addOnPreDrawListener(layoutListener);
        }
    }
}
 
源代码10 项目: spruce-android   文件: ListViewFragment.java
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
    listView = (ListView) container.findViewById(R.id.list_view);

    // Create the animator after the list view has finished laying out
    listView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            initSpruce();
        }
    });

    // Mock data objects
    List<ExampleData> placeHolderList = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        placeHolderList.add(new ExampleData());
    }

    // Remove default dividers and set adapter
    listView.setDivider(null);
    listView.setDividerHeight(0);
    listView.setAdapter(new ListViewAdapter(placeHolderList));

    return inflater.inflate(R.layout.list_view_fragment, container, false);
}
 
源代码11 项目: ClockView   文件: ScaleImageView.java
/** 
 * 初始化事件监听 
 */  
private void initListener() {  
    // 强制设置模式  
    setScaleType(ScaleType.MATRIX);
    // 添加观察者  
    getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {  
            // 移除观察者  
            getViewTreeObserver().removeGlobalOnLayoutListener(this);  
            // 获取控件大小  
            mWidth = getWidth();  
            mHeight = getHeight();  
  
            //通过getDrawable获得Src的图片  
            mDrawable = getDrawable();  
            if (mDrawable == null)  
                return;  
            mDrawableWidth = mDrawable.getIntrinsicWidth();  
            mDrawableHeight = mDrawable.getIntrinsicHeight();  
            initImageViewSize();  
            moveToCenter();  
        }  
    });  
}
 
源代码12 项目: mr-mantou-android   文件: MainActivity.java
@Override
public void onActivityReenter(int resultCode, Intent data) {
    super.onActivityReenter(resultCode, data);

    supportPostponeEnterTransition();

    reenterState = new Bundle(data.getExtras());

    binding.content.scrollToPosition(reenterState.getInt("index", 0));
    binding.content.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            binding.content.getViewTreeObserver().removeOnPreDrawListener(this);
            supportStartPostponedEnterTransition();
            return true;
        }
    });
}
 
源代码13 项目: TelePlus-Android   文件: TabsPagerTitleStrip.java
public void notifyDataSetChanged()
{
    if (pager.getAdapter() == null)
        return;

    tabsContainer.removeAllViews();
    tabCount = pager.getAdapter().getCount();
    if (tabCount < 2)
        return;

    for (int i = 0; i < tabCount; i++)
        addIconTabWithCounter(i, ((IconTabProvider) pager.getAdapter()).getPageIconResId(i));

    updateTabStyles();
    getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
    {
        @Override
        public void onGlobalLayout()
        {
            getViewTreeObserver().removeOnGlobalLayoutListener(this);
            currentPosition = pager.getCurrentItem();
            currentPage = currentPosition;
            scrollToChild(currentPosition, 0);
        }
    });
}
 
源代码14 项目: SimpleVideoEdit   文件: VideoGridViewAdapter.java
@Override
public VideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    final LayoutInflater inflater = LayoutInflater.from(parent.getContext());

    final View view = inflater.inflate(R.layout.video_select_gridview_item, null);

    if (actualDimensions == null) {
        view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                if (actualDimensions == null) {
                    actualDimensions = new int[] { UIUtil.getScreenWidth(view.getContext()) / 4, UIUtil.getScreenWidth(view.getContext()) / 4 };
                }
                view.getViewTreeObserver().removeOnPreDrawListener(this);
                return true;
            }
        });
    }

    return new VideoViewHolder(view);
}
 
源代码15 项目: FABtransitions   文件: MaterialSheet.java
public  MaterialSheet(final View view){
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)view.getLayoutParams();
    params.gravity = (Gravity.RIGHT);
    params.setMargins(Margins[0],Margins[1],Margins[2],Margins[3]);
    view.setLayoutParams(params);
    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            revealX  = (view.getLeft() + view.getRight()) / 2;
            revealY  = (view.getTop() + view.getBottom()) / 2;
            revealRadius = Math.max(view.getWidth(), view.getHeight());
            fabX = (fab.getLeft() +fab.getRight()) / 2;
            fabY = (fab.getTop() + fab.getBottom()) / 2;


        }
    });

}
 
源代码16 项目: timecat   文件: InputMethodUtils.java
/**
 * 设置View树监听,以便判断键盘是否弹出。
 * 【只有当Activity的windowSoftInputMode设置为adjustResize时才有效】
 */
private void detectKeyboard() {
    final View activityRootView = activity.findViewById(android.R.id.content);
    if (activityRootView != null) {
        ViewTreeObserver observer = activityRootView.getViewTreeObserver();
        if (observer == null) {
            return;
        }
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                final Rect r = new Rect();
                activityRootView.getWindowVisibleDisplayFrame(r);
                int heightDiff = DisplayUtils.getScreenHeight() - (r.bottom - r.top);
                boolean show = heightDiff >= sKeyBoardHeight / 3;
                setKeyboardShowing(show);// 设置键盘是否展开状态
                if (show) {
                    int keyboardHeight = heightDiff - DisplayUtils.getStatusBarHeight();
                    // 设置新的键盘高度
                    setKeyBoardHeight(keyboardHeight);
                    haskownKeyboardHeight = true;
                }
            }
        });
    }
}
 
源代码17 项目: TelePlus-Android   文件: DialogsActivity.java
@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    if (!onlySelect && floatingButton != null)
    {
        floatingButton.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
        {
            @Override
            public void onGlobalLayout()
            {
                floatingButton.setTranslationY(floatingHidden ? (!FeaturedSettings.tabSettings.hideTabs && FeaturedSettings.tabSettings.tabsToBottom) ? AndroidUtilities.dp(150) : AndroidUtilities.dp(100) : 0);
                unreadFloatingButtonContainer.setTranslationY(floatingHidden ? AndroidUtilities.dp(74) : 0);
                floatingButton.setClickable(!floatingHidden);
                if (floatingButton != null)
                {
                    floatingButton.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }
            }
        });
    }
}
 
源代码18 项目: TelePlus-Android   文件: EmbedBottomSheet.java
@Override
public void onShow(DialogInterface dialog) {
    if (pipVideoView != null && videoView.isInline()) {
        videoView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                videoView.getViewTreeObserver().removeOnPreDrawListener(this);
                /*AndroidUtilities.runOnUIThread(new Runnable() {
                    @Override
                    public void run() {*/

                    /*}
                }, 100);*/
                return true;
            }
        });
    }
}
 
源代码19 项目: ViewTooltip   文件: ViewTooltip.java
public void setup(final Rect viewRect, int screenWidth) {
    this.viewRect = new Rect(viewRect);
    final Rect myRect = new Rect(viewRect);

    final boolean changed = adjustSize(myRect, screenWidth);
    if (!changed) {
        onSetup(myRect);
    } else {
        getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                onSetup(myRect);
                getViewTreeObserver().removeOnPreDrawListener(this);
                return false;
            }
        });
    }
}
 
源代码20 项目: Mortar-architect   文件: NavigatorView.java
private void measureAndGetTransition(final View newView, final View previousView, final boolean removePreviousView, final ViewTransitionDirection direction, final ViewTransition transition, final Callback callback) {
    int width = newView.getWidth();
    int height = newView.getHeight();

    if (width > 0 && height > 0) {
        callback.onAnimatorReady(getAnimator(previousView, newView, removePreviousView, direction, transition, callback));
        return;
    }

    newView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            final ViewTreeObserver observer = newView.getViewTreeObserver();
            if (observer.isAlive()) {
                observer.removeOnPreDrawListener(this);
            }

            callback.onAnimatorReady(getAnimator(previousView, newView, removePreviousView, direction, transition, callback));
            return true;
        }
    });
}
 
源代码21 项目: MapView   文件: MapLayer.java
public void setImage(Picture image) {
    this.image = image;

    if (mapView.getWidth() == 0) {
        ViewTreeObserver vto = mapView.getViewTreeObserver();
        vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            public boolean onPreDraw() {
                if (!hasMeasured) {
                    initMapLayer();
                    hasMeasured = true;
                }
                return true;
            }
        });
    } else {
        initMapLayer();
    }
}
 
源代码22 项目: Mupdf   文件: DocActivityView.java
protected void hidePages()
{
	LinearLayout pages = (LinearLayout) findViewById(R.id.pages_container);
	if (null == pages)
		return;

	if (pages.getVisibility() == View.GONE)
		return;

	pages.setVisibility(View.GONE);
	ViewTreeObserver observer = mDocView.getViewTreeObserver();
	observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
	{
		@Override
		public void onGlobalLayout()
		{
			mDocView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
			mDocView.onHidePages();
		}
	});
}
 
源代码23 项目: hipda   文件: AndroidBug5497Workaround.java
private AndroidBug5497Workaround(Activity activity) {

        //获取状态栏的高度
        // 原例子中更改toobar margin的情况需要考虑状态栏高度
        //int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        //statusBarHeight = activity.getResources().getDimensionPixelSize(resourceId);

        //更改 AppBarLayout 的 layoutParams 不需要考虑
        statusBarHeight = 0;

        FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
        mChildOfContent = content.getChildAt(0);

        //界面出现变动都会调用这个监听事件
        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                if (isfirst) {
                    contentHeight = mChildOfContent.getHeight();//兼容华为等机型
                    isfirst = false;
                }
                possiblyResizeChildOfContent();
            }
        });

        frameLayoutParams = (FrameLayout.LayoutParams)
                mChildOfContent.getLayoutParams();
    }
 
源代码24 项目: ticdesign   文件: CoordinatorLayout.java
/**
 * Remove the pre-draw listener if we're attached to a window and mark that we currently
 * do not need it when attached.
 */
void removePreDrawListener() {
    if (mIsAttachedToWindow) {
        if (mOnPreDrawListener != null) {
            final ViewTreeObserver vto = getViewTreeObserver();
            vto.removeOnPreDrawListener(mOnPreDrawListener);
        }
    }
    mNeedsPreDrawListener = false;
}
 
源代码25 项目: ans-android-sdk   文件: EditState.java
private void cleanUp() {
    if (mAlive) {
        final View viewRoot = mViewRoot.get();
        if (null != viewRoot) {
            final ViewTreeObserver observer = viewRoot.getViewTreeObserver();
            if (observer.isAlive()) {
                observer.removeGlobalOnLayoutListener(this); // Deprecated Name
            }
        }
        mEdit.cleanup();
    }
    mAlive = false;
}
 
源代码26 项目: mosby   文件: DetailsFragment.java
@TargetApi(21) @Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
  super.onViewCreated(view, savedInstanceState);
  replayView.attachToScrollView(scrollView);
  starView.setOnClickListener(this);

  subjectView.setText(subject);
  senderImageView.setImageResource(senderProfilePic);
  senderNameView.setText(senderName);
  senderMailView.setText(senderEmail);
  starView.setStarred(starred);
  dateView.setText(format.format(new Date(date)));

  senderImageView.setOnClickListener(new View.OnClickListener() {
    @Override public void onClick(View v) {
      if (mail != null) {
        intentStarter.showProfile(getActivity(), mail.getSender());
      }
    }
  });

  // Shared element animation
  if (Build.VERSION.SDK_INT >= 21 && !isTablet()) {

    initTransitions();

    view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
      @Override public boolean onPreDraw() {
        view.getViewTreeObserver().removeOnPreDrawListener(this);
        getActivity().startPostponedEnterTransition();
        return true;
      }
    });
  }
}
 
源代码27 项目: BreadcrumbsView   文件: BreadcrumbsView.java
public BreadcrumbsView(Context context, AttributeSet attrs) {
  super(context, attrs);

  PropertiesHelper.init(this, attrs);

  getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override public void onGlobalLayout() {
      getViewTreeObserver().removeOnGlobalLayoutListener(this);
      createSteps();
    }
  });
}
 
源代码28 项目: SlickForm   文件: SimpleTooltipUtils.java
public static void removeOnGlobalLayoutListener(View view, ViewTreeObserver.OnGlobalLayoutListener listener) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        view.getViewTreeObserver().removeOnGlobalLayoutListener(listener);
    } else {
        //noinspection deprecation
        view.getViewTreeObserver().removeGlobalOnLayoutListener(listener);
    }
}
 
源代码29 项目: NewFastFrame   文件: SingerDetailFragment.java
@Override
protected void initView() {
    display = findViewById(R.id.wvp_fragment_singer_detail_display);
    name = findViewById(R.id.tv_fragment_singer_detail_name);
    mTabLayout = findViewById(R.id.tb_fragment_singer_detail_tab);
    refresh = findViewById(R.id.refresh_fragment_singer_detail_refresh);
    avatar = findViewById(R.id.riv_fragment_singer_detail_avatar);
    imageBg = findViewById(R.id.rl_fragment_singer_detail_image_bg);
    mToolbar = findViewById(R.id.tb_fragment_singer_detail_title);
    mFloatingActionButton = findViewById(R.id.fab_fragment_singer_detail_button);
    findViewById(R.id.iv_fragment_singer_detail_back).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    refresh.setOnRefreshListener(this);
    mAppBarLayout = findViewById(R.id.al_fragment_singer_detail_bar);
    mAppBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
        if (verticalOffset >= 0) {
            refresh.setEnabled(true);
        } else {
            refresh.setEnabled(false);
        }
    });
    mToolbar.getRootView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            mToolbar.getRootView().getViewTreeObserver().removeOnGlobalLayoutListener(this);
            mToolbar.getLayoutParams().height += StatusBarUtil.getStatusBarHeight(getContext());
            mToolbar.requestLayout();
        }
    });
    ViewCompat.setTransitionName(name, "name");
    ViewCompat.setTransitionName(avatar, "avatar");
}
 
源代码30 项目: XMiTools   文件: MiuiKeyguardClockHook.java
private void hookConstructor() {
    hookAllConstructors(mMiuiKeyguardClockCls,
            new MethodHookWrapper() {
                @Override
                protected void after(MethodHookParam param) {
                    LinearLayout keyguardClock = (LinearLayout) param.thisObject;

                    if (mShowVerticalSec) {
                        AnimatorSet mVerticalToHorizontalAnim2 = new AnimatorSet();
                        setAdditionalInstanceField(keyguardClock, M_VERTICAL_TO_HORIZONTAL_ANIM_2, mVerticalToHorizontalAnim2);

                        AnimatorSet mHorizontalToVerticalAnim2 = new AnimatorSet();
                        setAdditionalInstanceField(keyguardClock, M_HORIZONTAL_TO_VERTICAL_ANIM_2, mHorizontalToVerticalAnim2);
                    }

                    keyguardClock.getViewTreeObserver().addOnWindowAttachListener(new ViewTreeObserver.OnWindowAttachListener() {
                        @Override
                        public void onWindowAttached() {
                            addClock(keyguardClock);
                        }

                        @Override
                        public void onWindowDetached() {
                            removeClock(keyguardClock);
                        }
                    });

                    // register receiver
                    IntentFilter filter = new IntentFilter();
                    filter.addAction(Intent.ACTION_SCREEN_ON);
                    filter.addAction(Intent.ACTION_USER_PRESENT);
                    filter.addAction(Intent.ACTION_SCREEN_OFF);

                    keyguardClock.getContext().registerReceiver(mScreenReceiver, filter);
                }
            });
}
 
 类所在包
 同包方法