Search in sources :

Example 11 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project AndroidChromium by JackyAndroid.

the class NewTabPageView method initialize.

/**
     * Initializes the NTP. This must be called immediately after inflation, before this object is
     * used in any other way.
     *
     * @param manager NewTabPageManager used to perform various actions when the user interacts
     *                with the page.
     * @param searchProviderHasLogo Whether the search provider has a logo.
     * @param scrollPosition The adapter scroll position to initialize to.
     */
public void initialize(NewTabPageManager manager, boolean searchProviderHasLogo, int scrollPosition) {
    mManager = manager;
    mUiConfig = new UiConfig(this);
    ViewStub stub = (ViewStub) findViewById(R.id.new_tab_page_layout_stub);
    mUseCardsUi = manager.getSuggestionsSource() != null;
    if (mUseCardsUi) {
        stub.setLayoutResource(R.layout.new_tab_page_recycler_view);
        mRecyclerView = (NewTabPageRecyclerView) stub.inflate();
        // Don't attach now, the recyclerView itself will determine when to do it.
        mNewTabPageLayout = (NewTabPageLayout) LayoutInflater.from(getContext()).inflate(R.layout.new_tab_page_layout, mRecyclerView, false);
        mNewTabPageLayout.setUseCardsUiEnabled(mUseCardsUi);
        mRecyclerView.setAboveTheFoldView(mNewTabPageLayout);
        // Tailor the LayoutParams for the snippets UI, as the configuration in the XML is
        // made for the ScrollView UI.
        ViewGroup.LayoutParams params = mNewTabPageLayout.getLayoutParams();
        params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        mRecyclerView.setItemAnimator(new DefaultItemAnimator() {

            @Override
            public void onAnimationFinished(ViewHolder viewHolder) {
                super.onAnimationFinished(viewHolder);
                // When removing sections, because the animations are all translations, the
                // scroll events don't fire and we can get in the situation where the toolbar
                // buttons disappear.
                updateSearchBoxOnScroll();
            }
        });
    } else {
        stub.setLayoutResource(R.layout.new_tab_page_scroll_view);
        mScrollView = (NewTabPageScrollView) stub.inflate();
        mScrollView.setBackgroundColor(NtpStyleUtils.getBackgroundColorResource(getResources(), false));
        mScrollView.enableBottomShadow(SHADOW_COLOR);
        mNewTabPageLayout = (NewTabPageLayout) findViewById(R.id.ntp_content);
    }
    mMostVisitedDesign = new MostVisitedDesign(getContext());
    mMostVisitedLayout = (MostVisitedLayout) mNewTabPageLayout.findViewById(R.id.most_visited_layout);
    mMostVisitedDesign.initMostVisitedLayout(searchProviderHasLogo);
    mSearchProviderLogoView = (LogoView) mNewTabPageLayout.findViewById(R.id.search_provider_logo);
    mSearchBoxView = (ViewGroup) mNewTabPageLayout.findViewById(R.id.search_box);
    mNoSearchLogoSpacer = mNewTabPageLayout.findViewById(R.id.no_search_logo_spacer);
    initializeSearchBoxTextView();
    initializeVoiceSearchButton();
    initializeBottomToolbar();
    mNewTabPageLayout.addOnLayoutChangeListener(this);
    setSearchProviderHasLogo(searchProviderHasLogo);
    mPendingLoadTasks++;
    mManager.setMostVisitedURLsObserver(this, mMostVisitedDesign.getNumberOfTiles(searchProviderHasLogo));
    // Set up snippets
    if (mUseCardsUi) {
        mNewTabPageAdapter = NewTabPageAdapter.create(mManager, mNewTabPageLayout, mUiConfig);
        mRecyclerView.setAdapter(mNewTabPageAdapter);
        mRecyclerView.scrollToPosition(scrollPosition);
        if (CardsVariationParameters.isScrollBelowTheFoldEnabled()) {
            int searchBoxHeight = NtpStyleUtils.getSearchBoxHeight(getResources());
            mRecyclerView.getLinearLayoutManager().scrollToPositionWithOffset(mNewTabPageAdapter.getFirstHeaderPosition(), searchBoxHeight);
        }
        // Set up swipe-to-dismiss
        ItemTouchHelper helper = new ItemTouchHelper(mNewTabPageAdapter.getItemTouchCallbacks());
        helper.attachToRecyclerView(mRecyclerView);
        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

            private boolean mScrolledOnce = false;

            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                if (newState != RecyclerView.SCROLL_STATE_DRAGGING)
                    return;
                RecordUserAction.record("MobileNTP.Snippets.Scrolled");
                if (mScrolledOnce)
                    return;
                mScrolledOnce = true;
                NewTabPageUma.recordSnippetAction(NewTabPageUma.SNIPPETS_ACTION_SCROLLED);
            }
        });
        initializeSearchBoxRecyclerViewScrollHandling();
    } else {
        initializeSearchBoxScrollHandling();
    }
}
Also used : ViewGroup(android.view.ViewGroup) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) SuppressLint(android.annotation.SuppressLint) Point(android.graphics.Point) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) ViewStub(android.view.ViewStub) ViewHolder(android.support.v7.widget.RecyclerView.ViewHolder) RecyclerView(android.support.v7.widget.RecyclerView) NewTabPageRecyclerView(org.chromium.chrome.browser.ntp.cards.NewTabPageRecyclerView)

Example 12 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project RecyclerViewUndoSwipe by HoneyNeutrons.

the class MainActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    assert getSupportActionBar() != null;
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    setTabs();
    TextView tvDate = (TextView) findViewById(R.id.tvDate);
    TextView tvDay = (TextView) findViewById(R.id.tvDay);
    tvNumber = (TextView) findViewById(R.id.tvNumber);
    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("MM.dd.yyyy", Locale.getDefault());
    assert tvDate != null;
    assert tvDay != null;
    tvDate.setTypeface(Typefaces.getRobotoBlack(this));
    tvDay.setTypeface(Typefaces.getRobotoBlack(this));
    tvDate.setText(dateformat.format(c.getTime()).toUpperCase());
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.cardList);
    assert recyclerView != null;
    recyclerView.setHasFixedSize(true);
    final LinearLayoutManager llm = new LinearLayoutManager(this);
    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(llm);
    final ItemAdapter itemAdapter = new ItemAdapter(getApplicationContext(), this, tvNumber);
    recyclerView.setAdapter(itemAdapter);
    ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(itemAdapter, this);
    mItemTouchHelper = new ItemTouchHelper(callback);
    mItemTouchHelper.attachToRecyclerView(recyclerView);
    loadItems();
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    assert fab != null;
    fab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Item item = new Item();
            nu = ItemAdapter.itemList.size();
            nu++;
            item.setItemName("item" + nu);
            llm.scrollToPositionWithOffset(0, dpToPx(56));
            itemAdapter.addItem(0, item);
        }
    });
}
Also used : SimpleItemTouchHelperCallback(com.honeyneutrons.undoswipe.helper.SimpleItemTouchHelperCallback) Calendar(java.util.Calendar) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) View(android.view.View) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) MenuItem(android.view.MenuItem) FloatingActionButton(android.support.design.widget.FloatingActionButton) TextView(android.widget.TextView) RecyclerView(android.support.v7.widget.RecyclerView) SimpleDateFormat(java.text.SimpleDateFormat) Toolbar(android.support.v7.widget.Toolbar)

Example 13 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project AntennaPod by AntennaPod.

the class NewEpisodesFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = super.onCreateViewHelper(inflater, container, savedInstanceState, R.layout.all_episodes_fragment);
    ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
            AllEpisodesRecycleAdapter.Holder holder = (AllEpisodesRecycleAdapter.Holder) viewHolder;
            Log.d(TAG, "remove(" + holder.getItemId() + ")");
            if (subscription != null) {
                subscription.unsubscribe();
            }
            FeedItem item = holder.getFeedItem();
            // we're marking it as unplayed since the user didn't actually play it
            // but they don't want it considered 'NEW' anymore
            DBWriter.markItemPlayed(FeedItem.UNPLAYED, item.getId());
            final Handler h = new Handler(getActivity().getMainLooper());
            final Runnable r = () -> {
                FeedMedia media = item.getMedia();
                if (media != null && media.hasAlmostEnded() && UserPreferences.isAutoDelete()) {
                    DBWriter.deleteFeedMediaOfItem(getActivity(), media.getId());
                }
            };
            Snackbar snackbar = Snackbar.make(root, getString(R.string.marked_as_seen_label), Snackbar.LENGTH_LONG);
            snackbar.setAction(getString(R.string.undo), v -> {
                DBWriter.markItemPlayed(FeedItem.NEW, item.getId());
                h.removeCallbacks(r);
            });
            snackbar.show();
            h.postDelayed(r, (int) Math.ceil(snackbar.getDuration() * 1.05f));
        }

        @Override
        public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
            // We only want the active item
            if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
                if (viewHolder instanceof AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder) {
                    AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder itemViewHolder = (AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder) viewHolder;
                    itemViewHolder.onItemSelected();
                }
            }
            super.onSelectedChanged(viewHolder, actionState);
        }

        @Override
        public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            super.clearView(recyclerView, viewHolder);
            if (viewHolder instanceof AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder) {
                AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder itemViewHolder = (AllEpisodesRecycleAdapter.ItemTouchHelperViewHolder) viewHolder;
                itemViewHolder.onItemClear();
            }
        }
    };
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
    itemTouchHelper.attachToRecyclerView(recyclerView);
    return root;
}
Also used : AllEpisodesRecycleAdapter(de.danoeh.antennapod.adapter.AllEpisodesRecycleAdapter) Handler(android.os.Handler) RecyclerView(android.support.v7.widget.RecyclerView) View(android.view.View) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) FeedItem(de.danoeh.antennapod.core.feed.FeedItem) FeedMedia(de.danoeh.antennapod.core.feed.FeedMedia) RecyclerView(android.support.v7.widget.RecyclerView) Snackbar(android.support.design.widget.Snackbar)

Example 14 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project materialistic by hidroh.

the class StoryRecyclerViewAdapter method onAttachedToRecyclerView.

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    ContentResolver cr = recyclerView.getContext().getContentResolver();
    cr.registerContentObserver(MaterialisticProvider.URI_VIEWED, true, mObserver);
    cr.registerContentObserver(MaterialisticProvider.URI_FAVORITE, true, mObserver);
    mCallback = new ItemTouchHelperCallback(recyclerView.getContext(), Preferences.getListSwipePreferences(recyclerView.getContext())) {

        @Override
        public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            Item item = getItem(viewHolder.getAdapterPosition());
            if (item == null) {
                return 0;
            }
            mSaved = item.isFavorite();
            return checkSwipeDir(0, ItemTouchHelper.LEFT, mCallback.getLeftSwipeAction(), item) | checkSwipeDir(0, ItemTouchHelper.RIGHT, mCallback.getRightSwipeAction(), item);
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            Preferences.SwipeAction action = direction == ItemTouchHelper.LEFT ? getLeftSwipeAction() : getRightSwipeAction();
            Item item = getItem(viewHolder.getAdapterPosition());
            if (item == null) {
                return;
            }
            switch(action) {
                case Save:
                    toggleSave(item);
                    break;
                case Refresh:
                    refresh(item, viewHolder);
                    break;
                case Vote:
                    notifyItemChanged(viewHolder.getAdapterPosition());
                    vote(item, viewHolder);
                    break;
            }
        }

        private int checkSwipeDir(int swipeDirs, int swipeDir, Preferences.SwipeAction action, Item item) {
            switch(action) {
                case None:
                    break;
                case Vote:
                    if (!item.isVoted() && !item.isPendingVoted()) {
                        swipeDirs |= swipeDir;
                    }
                    break;
                default:
                    swipeDirs |= swipeDir;
                    break;
            }
            return swipeDirs;
        }
    };
    mItemTouchHelper = new ItemTouchHelper(mCallback);
    mItemTouchHelper.attachToRecyclerView(recyclerView);
    toggleAutoMarkAsViewed(recyclerView.getContext());
    mPrefObservable.subscribe(recyclerView.getContext(), (key, contextChanged) -> {
        mCallback.setSwipePreferences(recyclerView.getContext(), Preferences.getListSwipePreferences(recyclerView.getContext()));
        notifyDataSetChanged();
    }, R.string.pref_list_swipe_left, R.string.pref_list_swipe_right);
}
Also used : ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) Item(io.github.hidroh.materialistic.data.Item) RecyclerView(android.support.v7.widget.RecyclerView) Preferences(io.github.hidroh.materialistic.Preferences) ContentResolver(android.content.ContentResolver)

Example 15 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project materialistic by hidroh.

the class FavoriteRecyclerViewAdapter method onAttachedToRecyclerView.

@Override
public void onAttachedToRecyclerView(final RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    mMenuTintDelegate = new MenuTintDelegate();
    mMenuTintDelegate.onActivityCreated(mContext);
    mItemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback(mContext) {

        @Override
        public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            if (mActionModeDelegate != null && mActionModeDelegate.isInActionMode()) {
                return 0;
            }
            return super.getSwipeDirs(recyclerView, viewHolder);
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            dismiss(viewHolder.getAdapterPosition());
        }
    });
    mItemTouchHelper.attachToRecyclerView(recyclerView);
}
Also used : ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) MenuTintDelegate(io.github.hidroh.materialistic.MenuTintDelegate) RecyclerView(android.support.v7.widget.RecyclerView)

Aggregations

ItemTouchHelper (android.support.v7.widget.helper.ItemTouchHelper)124 RecyclerView (android.support.v7.widget.RecyclerView)93 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)84 View (android.view.View)67 TextView (android.widget.TextView)25 ImageView (android.widget.ImageView)24 ViewGroup (android.view.ViewGroup)20 Toolbar (android.support.v7.widget.Toolbar)16 LayoutInflater (android.view.LayoutInflater)14 SearchView (android.support.v7.widget.SearchView)12 Intent (android.content.Intent)11 DefaultItemAnimator (android.support.v7.widget.DefaultItemAnimator)11 DialogInterface (android.content.DialogInterface)10 Canvas (android.graphics.Canvas)9 Bundle (android.os.Bundle)9 BindView (butterknife.BindView)9 Nullable (android.support.annotation.Nullable)8 FloatingActionButton (android.support.design.widget.FloatingActionButton)8 ArrayList (java.util.ArrayList)8 Context (android.content.Context)7