Search in sources :

Example 11 with PagerAdapter

use of android.support.v4.view.PagerAdapter in project Reader by TheKeeperOfPie.

the class FragmentHistory method showDateRangeDialog.

private void showDateRangeDialog() {
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date_range, null, false);
    final DatePicker datePickerStart = (DatePicker) view.findViewById(R.id.date_picker_start);
    final DatePicker datePickerEnd = (DatePicker) view.findViewById(R.id.date_picker_end);
    final ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager_time);
    viewPager.setAdapter(new PagerAdapter() {

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            switch(position) {
                case 0:
                    return datePickerStart;
                case 1:
                    return datePickerEnd;
            }
            return super.instantiateItem(container, position);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch(position) {
                case 0:
                    return viewPager.getContext().getResources().getString(R.string.start);
                case 1:
                    return viewPager.getContext().getResources().getString(R.string.end);
            }
            return super.getPageTitle(position);
        }

        @Override
        public int getCount() {
            return 2;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    });
    final TabLayout layoutTab = (TabLayout) view.findViewById(R.id.layout_tab);
    layoutTab.setupWithViewPager(viewPager);
    final Calendar calendarStart = Calendar.getInstance();
    calendarStart.setTimeZone(TimeZone.getTimeZone("UTC"));
    datePickerStart.init(calendarStart.get(Calendar.YEAR), calendarStart.get(Calendar.MONTH), calendarStart.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            calendarStart.set(year, monthOfYear, dayOfMonth);
            layoutTab.getTabAt(0).setText(DateUtils.formatDateTime(getActivity(), calendarStart.getTimeInMillis(), FORMAT_DATE));
        }
    });
    long timeStart = controllerHistory.getTimeStart();
    if (timeStart > 0) {
        calendarStart.setTimeInMillis(timeStart);
        datePickerStart.updateDate(calendarStart.get(Calendar.YEAR), calendarStart.get(Calendar.MONTH), calendarStart.get(Calendar.DAY_OF_MONTH));
    }
    final Calendar calendarEnd = Calendar.getInstance();
    calendarEnd.setTimeZone(TimeZone.getTimeZone("UTC"));
    datePickerEnd.init(calendarEnd.get(Calendar.YEAR), calendarEnd.get(Calendar.MONTH), calendarEnd.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            calendarEnd.set(year, monthOfYear, dayOfMonth);
            layoutTab.getTabAt(1).setText(DateUtils.formatDateTime(getActivity(), calendarEnd.getTimeInMillis(), FORMAT_DATE));
        }
    });
    datePickerEnd.setMaxDate(System.currentTimeMillis() + AlarmManager.INTERVAL_DAY);
    long timeEnd = controllerHistory.getTimeEnd();
    if (timeEnd < Long.MAX_VALUE) {
        calendarEnd.setTimeInMillis(timeEnd);
        calendarEnd.add(Calendar.DAY_OF_MONTH, -1);
        datePickerEnd.updateDate(calendarEnd.get(Calendar.YEAR), calendarEnd.get(Calendar.MONTH), calendarEnd.get(Calendar.DAY_OF_MONTH));
    }
    AlertDialog dialog = new AlertDialog.Builder(getActivity()).setView(view).setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            Calendar calendarStart = Calendar.getInstance();
            calendarStart.set(datePickerStart.getYear(), datePickerStart.getMonth(), datePickerStart.getDayOfMonth());
            calendarStart.setTimeZone(TimeZone.getTimeZone("UTC"));
            Calendar calendarEnd = Calendar.getInstance();
            calendarEnd.set(datePickerEnd.getYear(), datePickerEnd.getMonth(), datePickerEnd.getDayOfMonth());
            calendarEnd.setTimeZone(TimeZone.getTimeZone("UTC"));
            calendarEnd.add(Calendar.DAY_OF_MONTH, 1);
            controllerHistory.setTimeStart(calendarStart.getTimeInMillis());
            controllerHistory.setTimeEnd(calendarEnd.getTimeInMillis());
            controllerHistory.reload();
        }
    }).setNeutralButton(R.string.reset, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            controllerHistory.setTimeStart(0);
            controllerHistory.setTimeEnd(Long.MAX_VALUE);
            controllerHistory.reload();
        }
    }).setNegativeButton(R.string.cancel, null).create();
    dialog.show();
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) DialogInterface(android.content.DialogInterface) ViewGroup(android.view.ViewGroup) Calendar(java.util.Calendar) SearchView(android.support.v7.widget.SearchView) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) ViewPager(android.support.v4.view.ViewPager) PagerAdapter(android.support.v4.view.PagerAdapter) TabLayout(android.support.design.widget.TabLayout) DatePicker(android.widget.DatePicker)

Example 12 with PagerAdapter

use of android.support.v4.view.PagerAdapter in project Reader by TheKeeperOfPie.

the class FragmentReply method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_reply, container, false);
    layoutCoordinator = (CoordinatorLayout) view.findViewById(R.id.layout_coordinator);
    layoutAppBar = (AppBarLayout) view.findViewById(R.id.layout_app_bar);
    toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    toolbar.setTitleTextColor(themer.getColorFilterPrimary().getColor());
    setUpToolbar();
    textAuthor = (TextView) view.findViewById(R.id.text_author);
    textAuthor.setText(getString(R.string.replying_from, controllerUser.getUser().getName()));
    scrollText = (NestedScrollView) view.findViewById(R.id.scroll_text);
    textParent = (TextView) view.findViewById(R.id.text_parent);
    textParent.setText(getArguments().getCharSequence(ARG_TEXT_PARENT, ""));
    editMarginDefault = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
    editMarginWithActions = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 56, getResources().getDisplayMetrics());
    editReply = (EditText) view.findViewById(R.id.edit_reply);
    editReply.setText(getArguments().getString(ARG_TEXT));
    editReply.setSelection(editReply.length());
    View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                AppBarLayout.Behavior behaviorAppBar = (AppBarLayout.Behavior) ((CoordinatorLayout.LayoutParams) layoutAppBar.getLayoutParams()).getBehavior();
                behaviorAppBar.onNestedFling(layoutCoordinator, layoutAppBar, null, 0, 1000, true);
            }
        }
    };
    editReply.setOnFocusChangeListener(onFocusChangeListener);
    textPreview = (TextView) view.findViewById(R.id.text_preview);
    viewDivider = view.findViewById(R.id.view_divider);
    toolbarActions = (Toolbar) view.findViewById(R.id.toolbar_actions);
    toolbarActions.inflateMenu(R.menu.menu_editor_actions);
    toolbarActions.setOnMenuItemClickListener(this);
    viewPager = (ViewPager) view.findViewById(R.id.view_pager);
    viewPager.setAdapter(new PagerAdapter() {

        @Override
        public CharSequence getPageTitle(int position) {
            switch(position) {
                case PAGE_PARENT:
                    return getString(R.string.page_parent);
                case PAGE_REPLY:
                    return getString(R.string.page_reply);
                case PAGE_PREVIEW:
                    return getString(R.string.page_preview);
            }
            return super.getPageTitle(position);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            return viewPager.getChildAt(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
        }

        @Override
        public int getCount() {
            return viewPager.getChildCount();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    });
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (toolbarActions.getVisibility() == View.VISIBLE) {
                float translationY = toolbarActions.getTranslationY();
                if (position == PAGE_REPLY) {
                    translationY = positionOffset * (toolbarActions.getHeight() + viewDivider.getHeight());
                } else if (position == PAGE_PARENT) {
                    translationY = (1f - positionOffset) * (toolbarActions.getHeight() + viewDivider.getHeight());
                }
                viewDivider.setTranslationY(translationY);
                toolbarActions.setTranslationY(translationY);
            }
        }

        @Override
        public void onPageSelected(int position) {
            if (position == PAGE_PREVIEW) {
                if (editReply.length() == 0) {
                    textPreview.setText(R.string.empty_reply_preview);
                } else {
                    textPreview.setText(Html.fromHtml(Processor.process(editReply.getText().toString())));
                }
            }
            menu.findItem(R.id.item_hide_actions).setVisible(position == PAGE_REPLY);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    viewPager.setOffscreenPageLimit(viewPager.getChildCount() - 1);
    viewPager.setCurrentItem(PAGE_REPLY);
    tabLayout = (TabLayout) view.findViewById(R.id.layout_tab);
    tabLayout.setTabMode(TabLayout.MODE_FIXED);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setTabTextColors(themer.getColorFilterTextMuted().getColor(), themer.getColorFilterPrimary().getColor());
    tabLayout.setupWithViewPager(viewPager);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            Menu menu = toolbarActions.getMenu();
            int maxNum = (int) (view.getWidth() / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 48, getResources().getDisplayMetrics()));
            int numShown = 0;
            for (int index = 0; index < menu.size(); index++) {
                MenuItem menuItem = menu.getItem(index);
                menuItem.getIcon().setColorFilter(themer.getColorFilterIcon());
                if (numShown++ < maxNum - 1) {
                    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
                } else {
                    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
                }
            }
            // Toggle visibility to fix weird bug causing tabs to not be added
            tabLayout.setVisibility(View.GONE);
            tabLayout.setVisibility(View.VISIBLE);
            editReply.requestFocus();
            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });
    view.post(new Runnable() {

        @Override
        public void run() {
            view.setTranslationY(view.getHeight());
            view.setVisibility(View.VISIBLE);
            ViewCompat.animate(view).translationY(0).withEndAction(new Runnable() {

                @Override
                public void run() {
                    Fragment fragment = getFragmentManager().findFragmentByTag(fragmentParentTag);
                    if (fragment != null) {
                        getFragmentManager().beginTransaction().hide(fragment).commit();
                    }
                }
            }).start();
        }
    });
    return view;
}
Also used : ViewGroup(android.view.ViewGroup) MenuItem(android.view.MenuItem) View(android.view.View) NestedScrollView(android.support.v4.widget.NestedScrollView) TextView(android.widget.TextView) ViewPager(android.support.v4.view.ViewPager) Fragment(android.support.v4.app.Fragment) PagerAdapter(android.support.v4.view.PagerAdapter) CoordinatorLayout(android.support.design.widget.CoordinatorLayout) TabLayout(android.support.design.widget.TabLayout) AppBarLayout(android.support.design.widget.AppBarLayout) Menu(android.view.Menu) ViewTreeObserver(android.view.ViewTreeObserver)

Example 13 with PagerAdapter

use of android.support.v4.view.PagerAdapter in project SeriesGuide by UweTrottmann.

the class SlidingTabLayout method populateTabStrip.

private void populateTabStrip() {
    final PagerAdapter adapter = mViewPager.getAdapter();
    final OnClickListener tabClickListener = new TabClickListener();
    for (int i = 0; i < adapter.getCount(); i++) {
        View tabView = null;
        TextView tabTitleView = null;
        if (mTabViewLayoutId != 0) {
            // If there is a custom tab view layout id set, try and inflate it
            tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false);
            tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
        }
        if (tabView == null) {
            tabView = createDefaultTabView(getContext());
        }
        if (tabTitleView == null && TextView.class.isInstance(tabView)) {
            tabTitleView = (TextView) tabView;
        }
        tabTitleView.setText(adapter.getPageTitle(i));
        tabView.setOnClickListener(tabClickListener);
        mTabStrip.addView(tabView);
    }
}
Also used : TextView(android.widget.TextView) HorizontalScrollView(android.widget.HorizontalScrollView) TextView(android.widget.TextView) View(android.view.View) PagerAdapter(android.support.v4.view.PagerAdapter)

Example 14 with PagerAdapter

use of android.support.v4.view.PagerAdapter in project Carbon by ZieIony.

the class PagerTabStrip method initTabs.

private void initTabs() {
    content.removeAllViews();
    if (viewPager == null)
        return;
    final PagerAdapter adapter = viewPager.getAdapter();
    if (viewPager.getAdapter() == null)
        return;
    if (tabBuilder == null) {
        tabBuilder = position -> {
            View tab = inflate(getContext(), R.layout.carbon_tab, null);
            ((TextView) tab.findViewById(R.id.carbon_tabText)).setText(getViewPager().getAdapter().getPageTitle(position).toString().toUpperCase());
            return tab;
        };
    }
    for (int i = 0; i < adapter.getCount(); i++) {
        View tab = tabBuilder.getView(i);
        content.addView(tab, new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1f));
        tab.setSelected(i == 0);
        final int finalI = i;
        tab.setOnClickListener(__ -> viewPager.setCurrentItem(finalI));
    }
}
Also used : View(android.view.View) PagerAdapter(android.support.v4.view.PagerAdapter) Paint(android.graphics.Paint) LinearLayout(android.widget.LinearLayout)

Example 15 with PagerAdapter

use of android.support.v4.view.PagerAdapter in project actor-platform by actorapp.

the class VerticalViewPager method setAdapter.

/**
     * Set a PagerAdapter that will supply views for this pager as needed.
     *
     * @param adapter Adapter to use
     */
public void setAdapter(PagerAdapter adapter) {
    if (mAdapter != null) {
        mAdapter.unregisterDataSetObserver(mObserver);
        mAdapter.startUpdate(this);
        for (int i = 0; i < mItems.size(); i++) {
            final ItemInfo ii = mItems.get(i);
            mAdapter.destroyItem(this, ii.position, ii.object);
        }
        mAdapter.finishUpdate(this);
        mItems.clear();
        removeNonDecorViews();
        mCurItem = 0;
        scrollTo(0, 0);
    }
    final PagerAdapter oldAdapter = mAdapter;
    mAdapter = adapter;
    mExpectedAdapterCount = 0;
    if (mAdapter != null) {
        if (mObserver == null) {
            mObserver = new PagerObserver();
        }
        mAdapter.registerDataSetObserver(mObserver);
        mPopulatePending = false;
        final boolean wasFirstLayout = mFirstLayout;
        mFirstLayout = true;
        mExpectedAdapterCount = mAdapter.getCount();
        if (mRestoredCurItem >= 0) {
            mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader);
            setCurrentItemInternal(mRestoredCurItem, false, true);
            mRestoredCurItem = -1;
            mRestoredAdapterState = null;
            mRestoredClassLoader = null;
        } else if (!wasFirstLayout) {
            populate();
        } else {
            requestLayout();
        }
    }
    if (mAdapterChangeListener != null && oldAdapter != adapter) {
        mAdapterChangeListener.onAdapterChanged(oldAdapter, adapter);
    }
}
Also used : PagerAdapter(android.support.v4.view.PagerAdapter)

Aggregations

PagerAdapter (android.support.v4.view.PagerAdapter)111 View (android.view.View)47 ViewPager (android.support.v4.view.ViewPager)39 TextView (android.widget.TextView)33 HorizontalScrollView (android.widget.HorizontalScrollView)19 ViewGroup (android.view.ViewGroup)18 LinearLayout (android.widget.LinearLayout)13 Toolbar (android.support.v7.widget.Toolbar)11 ImageView (android.widget.ImageView)11 TabLayout (android.support.design.widget.TabLayout)8 RecyclerView (android.support.v7.widget.RecyclerView)8 ArrayList (java.util.ArrayList)8 FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter)6 AppBarLayout (android.support.design.widget.AppBarLayout)5 CoordinatorLayout (android.support.design.widget.CoordinatorLayout)5 FragmentStatePagerAdapter (android.support.v4.app.FragmentStatePagerAdapter)5 ImageButton (android.widget.ImageButton)5 LargeTest (android.support.test.filters.LargeTest)4 MediumTest (android.support.test.filters.MediumTest)4 SmallTest (android.support.test.filters.SmallTest)4