Commit 5ddc7564 authored by Thomas's avatar Thomas
Browse files

ViewPager2 - end

parent 91c0f0de
Loading
Loading
Loading
Loading
+20 −39
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
@@ -34,20 +33,15 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;

import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.preference.PreferenceManager;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

import org.jetbrains.annotations.NotNull;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import java.util.ArrayList;

@@ -99,7 +93,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
    private int minTouch, maxTouch;
    private float startX;
    private float startY;
    private FragmentMedia mCurrentFragment;
    private ActivityMediaPagerBinding binding;

    @Override
@@ -113,8 +106,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {


        fullscreen = false;
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(MediaActivity.this);
        final int med_desc_timeout = sharedpreferences.getInt(getString(R.string.SET_MED_DESC_TIMEOUT), 3) * 1000;
        flags = getWindow().getDecorView().getSystemUiVisibility();
        Bundle b = getIntent().getExtras();
        if (b != null) {
@@ -132,11 +123,10 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {

        setTitle("");

        PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(MediaActivity.this);
        binding.mediaViewpager.setAdapter(mPagerAdapter);

        binding.mediaViewpager.setCurrentItem(mediaPosition - 1);
        binding.mediaViewpager.setOffscreenPageLimit(0);
        binding.haulerView.setOnDragDismissedListener(dragDirection -> ActivityCompat.finishAfterTransition(MediaActivity.this));
        registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
        String description = attachments.get(mediaPosition - 1).description;
@@ -145,14 +135,15 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
            binding.mediaDescription.setText(description);

        }
        binding.mediaViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageScrollStateChanged(int state) {
            }

        binding.mediaViewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }

            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                String description = attachments.get(position).description;
                if (handler != null) {
                    handler.removeCallbacksAndMessages(null);
@@ -162,8 +153,12 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
                    binding.mediaDescription.setText(description);
                }
            }
        });

            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });

        setFullscreen(true);
        Display display = getWindowManager().getDefaultDisplay();
@@ -258,8 +253,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {

        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(MediaActivity.this);
        final int med_desc_timeout = sharedpreferences.getInt(getString(R.string.SET_MED_DESC_TIMEOUT), 3) * 1000;
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                startX = event.getX();
@@ -307,10 +300,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
        super.onDestroy();
    }

    public FragmentMedia getCurrentFragment() {
        return mCurrentFragment;
    }

    @Override
    public void onDownloaded(String saveFilePath, String downloadUrl, Error error) {

@@ -372,15 +361,15 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
    /**
     * Media Pager
     */
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    private class ScreenSlidePagerAdapter extends FragmentStateAdapter {

        ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
        ScreenSlidePagerAdapter(FragmentActivity fa) {
            super(fa);
        }

        @NotNull
        @NonNull
        @Override
        public Fragment getItem(int position) {
        public Fragment createFragment(int position) {
            Bundle bundle = new Bundle();
            FragmentMedia mediaSliderFragment = new FragmentMedia();
            bundle.putInt(Helper.ARG_MEDIA_POSITION, position);
@@ -390,15 +379,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
        }

        @Override
        public void setPrimaryItem(@NotNull ViewGroup container, int position, @NotNull Object object) {
            if (getCurrentFragment() != object) {
                mCurrentFragment = ((FragmentMedia) object);
            }
            super.setPrimaryItem(container, position, object);
        }

        @Override
        public int getCount() {
        public int getItemCount() {
            return attachments.size();
        }
    }
+10 −4
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
@@ -125,7 +126,7 @@ public class ProfileActivity extends BaseActivity {
            if (b != null) {
                Account accountReceived = (Account) b.getSerializable(Helper.ARG_ACCOUNT);
                if (b.getBoolean(Helper.RECEIVE_REDRAW_PROFILE, false) && accountReceived != null) {
                    if (account != null && accountReceived.id.equalsIgnoreCase(account.id)) {
                    if (account != null && accountReceived.id != null && account.id != null && accountReceived.id.equalsIgnoreCase(account.id)) {
                        initializeView(accountReceived);
                    }
                }
@@ -246,15 +247,20 @@ public class ProfileActivity extends BaseActivity {
        }
        binding.accountTabLayout.clearOnTabSelectedListeners();
        binding.accountTabLayout.removeAllTabs();
        binding.accountViewpager.clearOnPageChangeListeners();
        //Tablayout for timelines/following/followers
        FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(getSupportFragmentManager(), account);
        FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(ProfileActivity.this, account);
        binding.accountTabLayout.addTab(binding.accountTabLayout.newTab().setText(getString(R.string.status_cnt, Helper.withSuffix(account.statuses_count))));
        binding.accountTabLayout.addTab(binding.accountTabLayout.newTab().setText(getString(R.string.following_cnt, Helper.withSuffix(account.following_count))));
        binding.accountTabLayout.addTab(binding.accountTabLayout.newTab().setText(getString(R.string.followers_cnt, Helper.withSuffix(account.followers_count))));
        binding.accountViewpager.setAdapter(fedilabProfileTLPageAdapter);
        binding.accountViewpager.setOffscreenPageLimit(3);
        binding.accountViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(binding.accountTabLayout));
        binding.accountViewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
                binding.accountTabLayout.selectTab(binding.accountTabLayout.getTabAt(position));
            }
        });
        binding.accountTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
+1 −3
Original line number Diff line number Diff line
@@ -60,10 +60,8 @@ public class ScheduledActivity extends BaseActivity {
        binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.toots_client)));
        binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.reblog)));

        binding.scheduleViewpager.setAdapter(new FedilabScheduledPageAdapter(getSupportFragmentManager()));
        binding.scheduleViewpager.setAdapter(new FedilabScheduledPageAdapter(ScheduledActivity.this));
        binding.scheduleViewpager.setOffscreenPageLimit(3);
        binding.scheduleViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(binding.scheduleTablayout));

        binding.scheduleTablayout.setTabTextColors(ThemeHelper.getAttColor(ScheduledActivity.this, R.attr.mTextColor), ContextCompat.getColor(ScheduledActivity.this, R.color.cyanea_accent_dark_reference));
        binding.scheduleTablayout.setTabIconTint(ThemeHelper.getColorStateList(ScheduledActivity.this));

+18 −20
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;

@@ -29,10 +28,9 @@ import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;

@@ -99,7 +97,7 @@ public class SearchResultTabActivity extends BaseActivity {
            public void onTabReselected(TabLayout.Tab tab) {
                Fragment fragment;
                if (binding.searchViewpager.getAdapter() != null) {
                    fragment = (Fragment) binding.searchViewpager.getAdapter().instantiateItem(binding.searchViewpager, tab.getPosition());
                    fragment = (Fragment) getSupportFragmentManager().findFragmentByTag("f" + binding.searchViewpager.getCurrentItem());
                    if (fragment instanceof FragmentMastodonAccount) {
                        FragmentMastodonAccount fragmentMastodonAccount = ((FragmentMastodonAccount) fragment);
                        fragmentMastodonAccount.scrollToTop();
@@ -134,7 +132,7 @@ public class SearchResultTabActivity extends BaseActivity {
                imm.hideSoftInputFromWindow(binding.searchTabLayout.getWindowToken(), 0);
                query = query.replaceAll("^#+", "");
                search = query.trim();
                PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
                ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this);
                binding.searchViewpager.setAdapter(mPagerAdapter);
                searchView.clearFocus();
                setTitle(search);
@@ -158,16 +156,19 @@ public class SearchResultTabActivity extends BaseActivity {
        });


        PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this);
        binding.searchViewpager.setAdapter(mPagerAdapter);

        binding.searchViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        binding.searchViewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
                binding.searchTabLayout.selectTab(binding.searchTabLayout.getTabAt(position));
            }

            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                TabLayout.Tab tab = binding.searchTabLayout.getTabAt(position);
                if (tab != null)
                    tab.select();
@@ -175,6 +176,7 @@ public class SearchResultTabActivity extends BaseActivity {

            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });
        return true;
@@ -196,15 +198,16 @@ public class SearchResultTabActivity extends BaseActivity {
    /**
     * Pager adapter for the 4 fragments
     */
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    private class ScreenSlidePagerAdapter extends FragmentStateAdapter {

        ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
        ScreenSlidePagerAdapter(FragmentActivity fa) {
            super(fa);
        }

        @NotNull

        @NonNull
        @Override
        public Fragment getItem(int position) {
        public Fragment createFragment(int position) {
            Bundle bundle = new Bundle();
            switch (position) {
                case 0:
@@ -231,12 +234,7 @@ public class SearchResultTabActivity extends BaseActivity {
        }

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

        }

        @Override
        public int getCount() {
        public int getItemCount() {
            return 4;
        }
    }
+1 −0
Original line number Diff line number Diff line
@@ -209,6 +209,7 @@ public class PinnedTimelineHelper {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
                activityMainBinding.tabLayout.selectTab(activityMainBinding.tabLayout.getTabAt(position));
            }

            @Override
Loading