GitNex-Android-App/app/src/main/java/org/mian/gitnex/fragments/ExploreFragment.java

117 lines
3.3 KiB
Java

package org.mian.gitnex.fragments;
import android.content.Context;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.ViewPager2Transformers;
/**
* @author M M Arif
*/
public class ExploreFragment extends Fragment {
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_explore, container, false);
Context ctx = getContext();
TinyDB tinyDB = TinyDB.getInstance(ctx);
((MainActivity) requireActivity())
.setActionBarTitle(getResources().getString(R.string.pageTitleExplore));
ViewPager2 viewPager = view.findViewById(R.id.containerExplore);
viewPager.setOffscreenPageLimit(1);
TabLayout tabLayout = view.findViewById(R.id.tabsExplore);
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
Typeface myTypeface = AppUtil.getTypeface(requireContext());
viewPager.setAdapter(new ViewPagerAdapter(this));
ViewPager2Transformers.returnSelectedTransformer(
viewPager,
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_TABS_ANIMATION_KEY)));
String[] tabTitles = {
getResources().getString(R.string.navRepos),
getResources().getString(R.string.pageTitleIssues),
getResources().getString(R.string.navOrg),
getResources().getString(R.string.pageTitleUsers)
};
new TabLayoutMediator(
tabLayout, viewPager, (tab, position) -> tab.setText(tabTitles[position]))
.attach();
for (int j = 0; j < tabTitles.length; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
return view;
}
public static class ViewPagerAdapter extends FragmentStateAdapter {
public ViewPagerAdapter(@NonNull ExploreFragment fa) {
super(fa);
}
@NonNull @Override
public Fragment createFragment(int position) {
Fragment fragment = null;
switch (position) {
case 0: // Repositories
fragment = new ExploreRepositoriesFragment();
break;
case 1: // Issues
fragment = new ExploreIssuesFragment();
break;
case 2: // Organizations
fragment = new ExplorePublicOrganizationsFragment();
break;
case 3: // Users
fragment = new ExploreUsersFragment();
break;
}
assert fragment != null;
return fragment;
}
@Override
public int getItemCount() {
return 4;
}
}
}