final View activityRootView = findViewById(R.id.activityRoot); activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight(); if (heightDiff > dpToPx(this, 200)) { // if more than 200 dp, it's probably a keyboard... // ... do something here } } });
final View activityRootView = findViewById(R.id.activityRoot); activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); //r will be populated with the coordinates of your view that area still visible. activityRootView.getWindowVisibleDisplayFrame(r); int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... ... do something here } } });
setContentView(R.layout.main); // Now get a handle to any View contained // within the main layout you are using View someView = findViewById(R.id.randomViewInMainLayout); // Find the root view View root = someView.getRootView(); // Set the color root.setBackgroundColor(getResources().getColor(android.R.color.red));
@Override protected Animator[] getAnimators(View view) { return new Animator[] { ObjectAnimator.ofFloat(view, "translationX", -view.getRootView().getWidth(), 0) }; } }
@Override protected Animator[] getAnimators(View view) { return new Animator[] { ObjectAnimator.ofFloat(view, "translationX", view.getRootView().getWidth(), 0) }; } }
/** * Invoke this method to change the currently focused window. * * @param view * A view that belongs to the view hierarchy/window that has focus, * or null to remove focus */ public void setFocusedWindow(View view) { mFocusLock.writeLock().lock(); try { mFocusedWindow = view == null ? null : view.getRootView(); } finally { mFocusLock.writeLock().unlock(); } fireFocusChangedEvent(); }
/** * Invoke this method to register a new view hierarchy. * * @param view * A view that belongs to the view hierarchy/window to register * @param name * The name of the view hierarchy/window to register * * @see #removeWindow(View) */ public void addWindow(View view, String name) { mWindowsLock.writeLock().lock(); try { mWindows.put(view.getRootView(), name); } finally { mWindowsLock.writeLock().unlock(); } fireWindowsChangedEvent(); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, -holder.itemView.getRootView().getWidth()); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, holder.itemView.getRootView().getWidth()); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, holder.itemView.getRootView().getWidth()); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, -holder.itemView.getRootView().getWidth()); }
private void matchViews() { for (Activity activity : this.activitiesSet) { final View rootView = activity.getWindow().getDecorView().getRootView(); final String activityName = activity.getClass().getSimpleName(); ViewMatcher matcher = new ViewMatcher( rootView, uiThreadHandler, this.delegateMap, activityName); this.viewMatchers.add(matcher); } }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, -holder.itemView.getRootView().getWidth() * .25f); ViewCompat.setAlpha(holder.itemView, 0); }
@Override protected void preAnimateAddImpl(RecyclerView.ViewHolder holder) { ViewCompat.setTranslationX(holder.itemView, holder.itemView.getRootView().getWidth() * .25f); ViewCompat.setAlpha(holder.itemView, 0); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(holder.itemView.getRootView().getWidth()) .setDuration(getRemoveDuration()) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(-holder.itemView.getRootView().getWidth()) .setDuration(getRemoveDuration()) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(holder.itemView.getRootView().getWidth()) .setDuration(getRemoveDuration()) .setInterpolator(mInterpolator) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(-holder.itemView.getRootView().getWidth()) .setDuration(getRemoveDuration()) .setInterpolator(mInterpolator) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(holder.itemView.getRootView().getWidth() * .25f) .alpha(0) .setDuration(getRemoveDuration()) .setInterpolator(mInterpolator) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }
@Override protected void animateRemoveImpl(final RecyclerView.ViewHolder holder) { ViewCompat.animate(holder.itemView) .translationX(-holder.itemView.getRootView().getWidth() * .25f) .alpha(0) .setDuration(getRemoveDuration()) .setInterpolator(mInterpolator) .setListener(new DefaultRemoveVpaListener(holder)) .setStartDelay(getRemoveDelay(holder)) .start(); }