Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +27 −21 Original line number Diff line number Diff line Loading @@ -900,11 +900,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt itemFilter.setTitle(show_filtered); } popup.setOnDismissListener(menu1 -> { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentMastodonTimeline && fragment.isVisible()) { FragmentMastodonTimeline fragmentMastodonTimeline = ((FragmentMastodonTimeline) fragment); fragmentMastodonTimeline.refreshAllAdapters(); } } }); String finalShow_filtered = show_filtered; popup.setOnMenuItemClickListener(item -> { Loading Loading @@ -990,7 +992,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } public void refreshFragment() { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentNotificationContainer) { FragmentTransaction fragTransaction = getSupportFragmentManager().beginTransaction(); fragTransaction.detach(fragment).commit(); Loading @@ -999,6 +1002,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt fragTransaction2.commit(); } } } @Override protected void onDestroy() { Loading Loading @@ -1035,7 +1039,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt */ private void scrollToTop() { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentMastodonTimeline) { FragmentMastodonTimeline fragmentMastodonTimeline = ((FragmentMastodonTimeline) fragment); fragmentMastodonTimeline.scrollToTop(); Loading @@ -1047,6 +1052,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt fragmentNotificationContainer.scrollToTop(); } } } @Override Loading app/src/main/java/app/fedilab/android/activities/MediaActivity.java +32 −21 Original line number Diff line number Diff line Loading @@ -33,15 +33,18 @@ 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.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.ViewPager; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; Loading Loading @@ -94,6 +97,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { private float startX; private float startY; private ActivityMediaPagerBinding binding; private FragmentMedia mCurrentFragment; @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -123,7 +127,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { setTitle(""); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(MediaActivity.this); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.mediaViewpager.setAdapter(mPagerAdapter); binding.mediaViewpager.setSaveEnabled(false); binding.mediaViewpager.setCurrentItem(mediaPosition - 1); Loading @@ -135,15 +139,14 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { binding.mediaDescription.setText(description); } binding.mediaViewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override binding.mediaViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { public void onPageScrollStateChanged(int state) { } 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); Loading @@ -153,13 +156,9 @@ 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(); Point size = new Point(); Loading Loading @@ -358,18 +357,22 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } public FragmentMedia getCurrentFragment() { return mCurrentFragment; } /** * Media Pager */ private class ScreenSlidePagerAdapter extends FragmentStateAdapter { ScreenSlidePagerAdapter(FragmentActivity fa) { super(fa); @SuppressWarnings("deprecation") private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { ScreenSlidePagerAdapter(FragmentManager fm) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @NotNull @Override public Fragment createFragment(int position) { public Fragment getItem(int position) { Bundle bundle = new Bundle(); FragmentMedia mediaSliderFragment = new FragmentMedia(); bundle.putInt(Helper.ARG_MEDIA_POSITION, position); Loading @@ -379,7 +382,15 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { } @Override public int getItemCount() { 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() { return attachments.size(); } } Loading app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +19 −21 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.Date; Loading Loading @@ -247,29 +247,27 @@ public class ProfileActivity extends BaseActivity { binding.accountTabLayout.clearOnTabSelectedListeners(); binding.accountTabLayout.removeAllTabs(); //Tablayout for timelines/following/followers FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(ProfileActivity.this, account); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(getSupportFragmentManager(), 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.accountTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { binding.accountViewpager.setCurrentItem(tab.getPosition()); } new TabLayoutMediator(binding.accountTabLayout, binding.accountViewpager, (tab, position) -> { binding.accountViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.status_cnt, Helper.withSuffix(account.statuses_count))); break; case 1: tab.setText(getString(R.string.following_cnt, Helper.withSuffix(account.following_count))); break; case 2: tab.setText(getString(R.string.followers_cnt, Helper.withSuffix(account.followers_count))); break; @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } ).attach(); }); binding.accountTabLayout.setTabTextColors(ThemeHelper.getAttColor(ProfileActivity.this, R.attr.mTextColor), ContextCompat.getColor(ProfileActivity.this, R.color.cyanea_accent_dark_reference)); binding.accountTabLayout.setTabIconTint(ThemeHelper.getColorStateList(ProfileActivity.this)); boolean disableGif = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_GIF), false); Loading app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java +20 −21 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.core.content.ContextCompat; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayout; import app.fedilab.android.R; import app.fedilab.android.databinding.ActivityScheduledBinding; Loading Loading @@ -56,31 +56,30 @@ public class ScheduledActivity extends BaseActivity { MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account); binding.title.setText(R.string.scheduled); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.toots_server))); 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(ScheduledActivity.this)); binding.scheduleViewpager.setAdapter(new FedilabScheduledPageAdapter(getSupportFragmentManager())); 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)); new TabLayoutMediator(binding.scheduleTablayout, binding.scheduleViewpager, (tab, position) -> { binding.scheduleViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.toots_server)); break; case 1: tab.setText(getString(R.string.toots_client)); break; case 2: tab.setText(getString(R.string.reblog)); break; binding.scheduleTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { binding.scheduleViewpager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } ).attach(); }); } @Override Loading app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java +51 −51 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ 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; Loading @@ -28,11 +29,12 @@ import androidx.annotation.NonNull; import androidx.appcompat.widget.SearchView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; import org.jetbrains.annotations.NotNull; Loading Loading @@ -75,35 +77,12 @@ public class SearchResultTabActivity extends BaseActivity { getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary))); } setTitle(search); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.tags))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.accounts))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.toots))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.action_cache))); binding.searchTabLayout.setTabTextColors(ThemeHelper.getAttColor(SearchResultTabActivity.this, R.attr.mTextColor), ContextCompat.getColor(SearchResultTabActivity.this, R.color.cyanea_accent_dark_reference)); binding.searchTabLayout.setTabIconTint(ThemeHelper.getColorStateList(SearchResultTabActivity.this)); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this); binding.searchViewpager.setAdapter(mPagerAdapter); binding.searchViewpager.setSaveEnabled(false); binding.searchViewpager.setOffscreenPageLimit(3); new TabLayoutMediator(binding.searchTabLayout, binding.searchViewpager, (tab, position) -> { binding.searchViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.tags)); break; case 1: tab.setText(getString(R.string.accounts)); break; case 2: tab.setText(getString(R.string.toots)); break; case 3: tab.setText(getString(R.string.action_cache)); break; } } ).attach(); binding.searchTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { Loading @@ -112,12 +91,12 @@ public class SearchResultTabActivity extends BaseActivity { @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.searchViewpager.getCurrentItem()); Fragment fragment; if (binding.searchViewpager.getAdapter() != null) { fragment = (Fragment) binding.searchViewpager.getAdapter().instantiateItem(binding.searchViewpager, tab.getPosition()); if (fragment instanceof FragmentMastodonAccount) { FragmentMastodonAccount fragmentMastodonAccount = ((FragmentMastodonAccount) fragment); fragmentMastodonAccount.scrollToTop(); Loading @@ -129,6 +108,7 @@ public class SearchResultTabActivity extends BaseActivity { fragmentMastodonTag.scrollToTop(); } } } }); } Loading @@ -149,7 +129,7 @@ public class SearchResultTabActivity extends BaseActivity { imm.hideSoftInputFromWindow(binding.searchTabLayout.getWindowToken(), 0); query = query.replaceAll("^#+", ""); search = query.trim(); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.searchViewpager.setAdapter(mPagerAdapter); searchView.clearFocus(); setTitle(search); Loading @@ -172,7 +152,24 @@ public class SearchResultTabActivity extends BaseActivity { searchView.setIconified(false); }); PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.searchViewpager.setAdapter(mPagerAdapter); binding.searchViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { TabLayout.Tab tab = binding.searchTabLayout.getTabAt(position); if (tab != null) tab.select(); } @Override public void onPageScrollStateChanged(int state) { } }); return true; } Loading @@ -193,16 +190,15 @@ public class SearchResultTabActivity extends BaseActivity { /** * Pager adapter for the 4 fragments */ private class ScreenSlidePagerAdapter extends FragmentStateAdapter { ScreenSlidePagerAdapter(FragmentActivity fa) { super(fa); @SuppressWarnings("deprecation") private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { ScreenSlidePagerAdapter(FragmentManager fm) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @NotNull @Override public Fragment createFragment(int position) { public Fragment getItem(int position) { Bundle bundle = new Bundle(); switch (position) { case 0: Loading @@ -229,7 +225,11 @@ public class SearchResultTabActivity extends BaseActivity { } @Override public int getItemCount() { public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { } @Override public int getCount() { return 4; } } Loading Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +27 −21 Original line number Diff line number Diff line Loading @@ -900,11 +900,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt itemFilter.setTitle(show_filtered); } popup.setOnDismissListener(menu1 -> { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentMastodonTimeline && fragment.isVisible()) { FragmentMastodonTimeline fragmentMastodonTimeline = ((FragmentMastodonTimeline) fragment); fragmentMastodonTimeline.refreshAllAdapters(); } } }); String finalShow_filtered = show_filtered; popup.setOnMenuItemClickListener(item -> { Loading Loading @@ -990,7 +992,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } public void refreshFragment() { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentNotificationContainer) { FragmentTransaction fragTransaction = getSupportFragmentManager().beginTransaction(); fragTransaction.detach(fragment).commit(); Loading @@ -999,6 +1002,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt fragTransaction2.commit(); } } } @Override protected void onDestroy() { Loading Loading @@ -1035,7 +1039,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt */ private void scrollToTop() { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.viewPager.getCurrentItem()); if (binding.viewPager.getAdapter() != null) { Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, binding.tabLayout.getSelectedTabPosition()); if (fragment instanceof FragmentMastodonTimeline) { FragmentMastodonTimeline fragmentMastodonTimeline = ((FragmentMastodonTimeline) fragment); fragmentMastodonTimeline.scrollToTop(); Loading @@ -1047,6 +1052,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt fragmentNotificationContainer.scrollToTop(); } } } @Override Loading
app/src/main/java/app/fedilab/android/activities/MediaActivity.java +32 −21 Original line number Diff line number Diff line Loading @@ -33,15 +33,18 @@ 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.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.ViewPager; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; Loading Loading @@ -94,6 +97,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { private float startX; private float startY; private ActivityMediaPagerBinding binding; private FragmentMedia mCurrentFragment; @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -123,7 +127,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { setTitle(""); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(MediaActivity.this); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.mediaViewpager.setAdapter(mPagerAdapter); binding.mediaViewpager.setSaveEnabled(false); binding.mediaViewpager.setCurrentItem(mediaPosition - 1); Loading @@ -135,15 +139,14 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { binding.mediaDescription.setText(description); } binding.mediaViewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override binding.mediaViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { public void onPageScrollStateChanged(int state) { } 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); Loading @@ -153,13 +156,9 @@ 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(); Point size = new Point(); Loading Loading @@ -358,18 +357,22 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } public FragmentMedia getCurrentFragment() { return mCurrentFragment; } /** * Media Pager */ private class ScreenSlidePagerAdapter extends FragmentStateAdapter { ScreenSlidePagerAdapter(FragmentActivity fa) { super(fa); @SuppressWarnings("deprecation") private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { ScreenSlidePagerAdapter(FragmentManager fm) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @NotNull @Override public Fragment createFragment(int position) { public Fragment getItem(int position) { Bundle bundle = new Bundle(); FragmentMedia mediaSliderFragment = new FragmentMedia(); bundle.putInt(Helper.ARG_MEDIA_POSITION, position); Loading @@ -379,7 +382,15 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { } @Override public int getItemCount() { 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() { return attachments.size(); } } Loading
app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +19 −21 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.Date; Loading Loading @@ -247,29 +247,27 @@ public class ProfileActivity extends BaseActivity { binding.accountTabLayout.clearOnTabSelectedListeners(); binding.accountTabLayout.removeAllTabs(); //Tablayout for timelines/following/followers FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(ProfileActivity.this, account); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); binding.accountTabLayout.addTab(binding.accountTabLayout.newTab()); FedilabProfileTLPageAdapter fedilabProfileTLPageAdapter = new FedilabProfileTLPageAdapter(getSupportFragmentManager(), 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.accountTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { binding.accountViewpager.setCurrentItem(tab.getPosition()); } new TabLayoutMediator(binding.accountTabLayout, binding.accountViewpager, (tab, position) -> { binding.accountViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.status_cnt, Helper.withSuffix(account.statuses_count))); break; case 1: tab.setText(getString(R.string.following_cnt, Helper.withSuffix(account.following_count))); break; case 2: tab.setText(getString(R.string.followers_cnt, Helper.withSuffix(account.followers_count))); break; @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } ).attach(); }); binding.accountTabLayout.setTabTextColors(ThemeHelper.getAttColor(ProfileActivity.this, R.attr.mTextColor), ContextCompat.getColor(ProfileActivity.this, R.color.cyanea_accent_dark_reference)); binding.accountTabLayout.setTabIconTint(ThemeHelper.getColorStateList(ProfileActivity.this)); boolean disableGif = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_GIF), false); Loading
app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java +20 −21 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.core.content.ContextCompat; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayout; import app.fedilab.android.R; import app.fedilab.android.databinding.ActivityScheduledBinding; Loading Loading @@ -56,31 +56,30 @@ public class ScheduledActivity extends BaseActivity { MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account); binding.title.setText(R.string.scheduled); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab()); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.toots_server))); 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(ScheduledActivity.this)); binding.scheduleViewpager.setAdapter(new FedilabScheduledPageAdapter(getSupportFragmentManager())); 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)); new TabLayoutMediator(binding.scheduleTablayout, binding.scheduleViewpager, (tab, position) -> { binding.scheduleViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.toots_server)); break; case 1: tab.setText(getString(R.string.toots_client)); break; case 2: tab.setText(getString(R.string.reblog)); break; binding.scheduleTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { binding.scheduleViewpager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } ).attach(); }); } @Override Loading
app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java +51 −51 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ 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; Loading @@ -28,11 +29,12 @@ import androidx.annotation.NonNull; import androidx.appcompat.widget.SearchView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; import org.jetbrains.annotations.NotNull; Loading Loading @@ -75,35 +77,12 @@ public class SearchResultTabActivity extends BaseActivity { getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary))); } setTitle(search); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab()); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.tags))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.accounts))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.toots))); binding.searchTabLayout.addTab(binding.searchTabLayout.newTab().setText(getString(R.string.action_cache))); binding.searchTabLayout.setTabTextColors(ThemeHelper.getAttColor(SearchResultTabActivity.this, R.attr.mTextColor), ContextCompat.getColor(SearchResultTabActivity.this, R.color.cyanea_accent_dark_reference)); binding.searchTabLayout.setTabIconTint(ThemeHelper.getColorStateList(SearchResultTabActivity.this)); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this); binding.searchViewpager.setAdapter(mPagerAdapter); binding.searchViewpager.setSaveEnabled(false); binding.searchViewpager.setOffscreenPageLimit(3); new TabLayoutMediator(binding.searchTabLayout, binding.searchViewpager, (tab, position) -> { binding.searchViewpager.setCurrentItem(tab.getPosition(), true); switch (position) { case 0: tab.setText(getString(R.string.tags)); break; case 1: tab.setText(getString(R.string.accounts)); break; case 2: tab.setText(getString(R.string.toots)); break; case 3: tab.setText(getString(R.string.action_cache)); break; } } ).attach(); binding.searchTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { Loading @@ -112,12 +91,12 @@ public class SearchResultTabActivity extends BaseActivity { @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { Fragment fragment = getSupportFragmentManager().findFragmentByTag("f" + binding.searchViewpager.getCurrentItem()); Fragment fragment; if (binding.searchViewpager.getAdapter() != null) { fragment = (Fragment) binding.searchViewpager.getAdapter().instantiateItem(binding.searchViewpager, tab.getPosition()); if (fragment instanceof FragmentMastodonAccount) { FragmentMastodonAccount fragmentMastodonAccount = ((FragmentMastodonAccount) fragment); fragmentMastodonAccount.scrollToTop(); Loading @@ -129,6 +108,7 @@ public class SearchResultTabActivity extends BaseActivity { fragmentMastodonTag.scrollToTop(); } } } }); } Loading @@ -149,7 +129,7 @@ public class SearchResultTabActivity extends BaseActivity { imm.hideSoftInputFromWindow(binding.searchTabLayout.getWindowToken(), 0); query = query.replaceAll("^#+", ""); search = query.trim(); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(SearchResultTabActivity.this); ScreenSlidePagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.searchViewpager.setAdapter(mPagerAdapter); searchView.clearFocus(); setTitle(search); Loading @@ -172,7 +152,24 @@ public class SearchResultTabActivity extends BaseActivity { searchView.setIconified(false); }); PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); binding.searchViewpager.setAdapter(mPagerAdapter); binding.searchViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { TabLayout.Tab tab = binding.searchTabLayout.getTabAt(position); if (tab != null) tab.select(); } @Override public void onPageScrollStateChanged(int state) { } }); return true; } Loading @@ -193,16 +190,15 @@ public class SearchResultTabActivity extends BaseActivity { /** * Pager adapter for the 4 fragments */ private class ScreenSlidePagerAdapter extends FragmentStateAdapter { ScreenSlidePagerAdapter(FragmentActivity fa) { super(fa); @SuppressWarnings("deprecation") private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { ScreenSlidePagerAdapter(FragmentManager fm) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @NotNull @Override public Fragment createFragment(int position) { public Fragment getItem(int position) { Bundle bundle = new Bundle(); switch (position) { case 0: Loading @@ -229,7 +225,11 @@ public class SearchResultTabActivity extends BaseActivity { } @Override public int getItemCount() { public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { } @Override public int getCount() { return 4; } } Loading