From 2f79a74ad3e1fc1361a31f5434b9a522d776cb91 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Sat, 10 Oct 2020 15:36:14 +0700 Subject: [PATCH] Add icon to v2 design --- .../design/widget/VerticalTabLayout.java | 68 ++++++++++++++++-- .../pojavlaunch/PojavLauncherActivity.java | 48 ++----------- .../main/res/drawable/ic_menu_dungeons.png | Bin 0 -> 1044 bytes app/src/main/res/drawable/ic_menu_java.png | Bin 0 -> 1087 bytes app/src/main/res/drawable/ic_menu_news.png | Bin 0 -> 331 bytes .../main/res/drawable/ic_menu_settings.png | Bin 0 -> 333 bytes 6 files changed, 68 insertions(+), 48 deletions(-) create mode 100644 app/src/main/res/drawable/ic_menu_dungeons.png create mode 100644 app/src/main/res/drawable/ic_menu_java.png create mode 100644 app/src/main/res/drawable/ic_menu_news.png create mode 100644 app/src/main/res/drawable/ic_menu_settings.png diff --git a/app/src/main/java/android/support/design/widget/VerticalTabLayout.java b/app/src/main/java/android/support/design/widget/VerticalTabLayout.java index c65cc49b5..5efc11f26 100644 --- a/app/src/main/java/android/support/design/widget/VerticalTabLayout.java +++ b/app/src/main/java/android/support/design/widget/VerticalTabLayout.java @@ -75,6 +75,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; +import java.util.*; +import android.support.v4.app.*; /** * VerticalTabLayout provides a vertical layout to display tabs. @@ -276,7 +278,7 @@ public class VerticalTabLayout extends ScrollView { private ValueAnimator mScrollAnimator; ViewPager mViewPager; - private PagerAdapter mPagerAdapter; + private ViewPagerAdapter mPagerAdapter; private DataSetObserver mPagerAdapterObserver; private VerticalTabLayoutOnPageChangeListener mPageChangeListener; private AdapterChangeListener mAdapterChangeListener; @@ -808,7 +810,7 @@ public class VerticalTabLayout extends ScrollView { mCurrentVpSelectedListener = new ViewPagerOnTabSelectedListener(viewPager); addOnTabSelectedListener(mCurrentVpSelectedListener); - final PagerAdapter adapter = viewPager.getAdapter(); + final ViewPagerAdapter adapter = (VerticalTabLayout.ViewPagerAdapter) viewPager.getAdapter(); if (adapter != null) { // Now we'll populate ourselves from the pager adapter, adding an observer if // autoRefresh is enabled @@ -840,7 +842,7 @@ public class VerticalTabLayout extends ScrollView { * when the {@link PagerAdapter} is changed. */ @Deprecated - public void setTabsFromPagerAdapter(@Nullable final PagerAdapter adapter) { + public void setTabsFromPagerAdapter(@Nullable final ViewPagerAdapter adapter) { setPagerAdapter(adapter, false); } @@ -882,7 +884,7 @@ public class VerticalTabLayout extends ScrollView { - getPaddingRight()); } - void setPagerAdapter(@Nullable final PagerAdapter adapter, final boolean addObserver) { + void setPagerAdapter(@Nullable final ViewPagerAdapter adapter, final boolean addObserver) { if (mPagerAdapter != null && mPagerAdapterObserver != null) { // If we already have a PagerAdapter, unregister our observer mPagerAdapter.unregisterDataSetObserver(mPagerAdapterObserver); @@ -909,6 +911,9 @@ public class VerticalTabLayout extends ScrollView { final int adapterCount = mPagerAdapter.getCount(); for (int i = 0; i < adapterCount; i++) { addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false); + if (mPagerAdapter.getIcon(i) != 0) { + getTabAt(i).setIcon(mPagerAdapter.getIcon(i)); + } } // Make sure we reflect the currently set ViewPager item @@ -2217,7 +2222,7 @@ public class VerticalTabLayout extends ScrollView { public void onAdapterChanged(@NonNull ViewPager viewPager, @Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter) { if (mViewPager == viewPager) { - setPagerAdapter(newAdapter, mAutoRefresh); + setPagerAdapter((ViewPagerAdapter) newAdapter, mAutoRefresh); } } @@ -2225,4 +2230,57 @@ public class VerticalTabLayout extends ScrollView { mAutoRefresh = autoRefresh; } } + + public static class ViewPagerAdapter extends FragmentPagerAdapter { + List viewPagerList = new ArrayList<>(); + + public ViewPagerAdapter(FragmentManager fragmentManager) { + super(fragmentManager); + } + + @Override + public Fragment getItem(int position) { + return viewPagerList.get(position).fragment; + } + + @Override + public int getCount() { + return viewPagerList.size(); + } + + public int getIcon(int position) { + return viewPagerList.get(position).icon; + } + + @Override + public CharSequence getPageTitle(int position) { + return viewPagerList.get(position).title; + } + + public void addFragment(Fragment fragment, int icon, String name) { + ViewPagerItem item = new ViewPagerItem(); + item.fragment = fragment; + item.icon = icon; + item.title = name; + viewPagerList.add(item); + } + + public void setFragment(int index, Fragment fragment, int icon, String name) { + ViewPagerItem item = new ViewPagerItem(); + item.fragment = fragment; + item.icon = icon; + item.title = name; + viewPagerList.set(index, item); + } + + public void removeFragment(int index) { + viewPagerList.remove(index); + } + } + + public static class ViewPagerItem { + public Fragment fragment; + public String title; + public int icon; + } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java index 036e98c5e..4c84647d7 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java @@ -5,6 +5,7 @@ import android.content.*; import android.graphics.*; import android.os.*; import android.support.design.widget.*; +import android.support.design.widget.VerticalTabLayout.ViewPagerAdapter; import android.support.v4.app.*; import android.support.v4.view.*; import android.support.v7.app.*; @@ -109,9 +110,10 @@ public class PojavLauncherActivity extends AppCompatActivity crashView = new CrashFragment(); viewPageAdapter = new ViewPagerAdapter(getSupportFragmentManager()); - viewPageAdapter.addFragment(new LauncherFragment(), getString(R.string.mcl_tab_news)); - viewPageAdapter.addFragment(consoleView, getString(R.string.mcl_tab_console)); - viewPageAdapter.addFragment(crashView, getString(R.string.mcl_tab_crash)); + viewPageAdapter.addFragment(new LauncherFragment(), R.drawable.ic_menu_news, getString(R.string.mcl_tab_news)); + viewPageAdapter.addFragment(consoleView, R.drawable.ic_menu_java, getString(R.string.mcl_tab_console)); + viewPageAdapter.addFragment(crashView, 0, getString(R.string.mcl_tab_crash)); + viewPageAdapter.addFragment(new LauncherPreferenceFragment(), R.drawable.ic_menu_settings, getString(R.string.mcl_option_settings)); viewPager.setAdapter(viewPageAdapter); tabLayout.setupWithViewPager(viewPager); @@ -854,44 +856,4 @@ public class PojavLauncherActivity extends AppCompatActivity } dialog.show(); } - - private class ViewPagerAdapter extends FragmentPagerAdapter { - - List fragmentList = new ArrayList<>(); - List fragmentTitles = new ArrayList<>(); - - public ViewPagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager); - } - - @Override - public Fragment getItem(int position) { - return fragmentList.get(position); - } - - @Override - public int getCount() { - return fragmentList.size(); - } - - @Override - public CharSequence getPageTitle(int position) { - return fragmentTitles.get(position); - } - - public void addFragment(Fragment fragment, String name) { - fragmentList.add(fragment); - fragmentTitles.add(name); - } - - public void setFragment(int index, Fragment fragment, String name) { - fragmentList.set(index, fragment); - fragmentTitles.set(index, name); - } - - public void removeFragment(int index) { - fragmentList.remove(index); - fragmentTitles.remove(index); - } - } } diff --git a/app/src/main/res/drawable/ic_menu_dungeons.png b/app/src/main/res/drawable/ic_menu_dungeons.png new file mode 100644 index 0000000000000000000000000000000000000000..ac57624d180d5a2b074839e14472f7bbd849adc1 GIT binary patch literal 1044 zcmV+v1nc{WP)Wa>#~ zu7T|CnFLOZ02Dt!8z0Zyxu$r}+!;GBen0_2;~C&Lb!|QZ79%oHX3Rm!UURL{2Lck) ztpnbMuB|e&rVB6%7i&V5XxXR|EgNf-sK1(Wah{s8{Z`kc)JKoWKw~Y%9F*4cHr2AT z3FgD4ss$Yrx2BIP%#eHrieId_C<7g$-FaG_1T}LOY@ngG8&EBK>CgpBGSv0W&kKup zSMO-qs1hw3>tiphI}xO+x}mPUsy{;-_f;*9=+!M$1 z;MH{Zb`jtqaD5+sU61L_?J=ujR5q$a%Z8sm{gH~@>EEb1q(Zs{Rx70fi2wEaqc~I-68;1HPo1>6Th8{TmiV7CS>#jLJuqXxUgFA7yQi&}cLehWasJk|a1i zJyo?J2xxT_Ha2+0-rL)|i>q;ceSP=Q5KCk05&S&oH#1@_9_e62a~#V}k_F%A7E-U* z?>tdsX*_*Nd|hA3kL@Wsy3NSaDILcMzhIpwvLaFsaN)TJ+#~U zKYGX?uiNc{;oI69_B0<7@om{~Xne|gs$x_&szl3%&t7~%Dj6&FVj(v-H>xI8msQU9 z^D?ASV2y+{1Ge>!$78DbtXvCHk=c#eXf(pf$%(3ohYkh<(4dy?MJlUwFdEXnvGv~G z-s0@+3^XPzNKeU1x@|)sV{AR=m!K*}Wur>8Y)CPBfGZu!{SKKv1MdKu01s;pmQTv7xD_td$!)Wb&~*C4n^FOipp$c08BGJ(hiFtEB0 zhOAsrF3BpCmAoZw0Au8FRRwHvFw_Bd1YMwQLlh(BWU-L5Ga@CP~k-*a%)xr z$-4TV9|;?j?zgNE4a|9R$;n3xs8cy-7x!bN@5UlmmK$VizNijM%3c2^LG(=KH${mw zC-cq>`X7$KV3ZzO|?S+E*P99s;HO3j&*z*U}FkzWwNG?;6Ge#q} zvXClkowi3{FpDn_C~5D$2R+>vxnh2Z^zk7btH6V?AG}Gq+IV3k3$$(69eEk{LP}=Y(m4_N5N)d* zmW&NtqKYhcfa!d|xk9__DJLDH1DXJJVPKB=n&#f^8_4$)$Qo)f{q&vdr02CMfv>!cNy=$bK6Ob z+@Sj5mm_@jqwKaCGZ01mOyHH5D6+1D<^2;8vD49)0qYJS{a%c#pnFH#hAz;yVP^tW zpFjMFRnL5shhK&NYw8@s(;8_F8oSi_swhG6L4(YB!rv~AcO z_i}K|-HUb^cTBQ!y-bjjHv1s9cw;sJ!_V_yDR*lWVz_@@Gq$=P&_!9aEk+e;HmS?~JJF5SO714DjzOu4siOtBZscB}cPoII87VN)10mKW^) zzXy8(==ZoE)mLmJHML}GyDDH8XzQ>$@{)S4EvFghD%XBDBym(qV_w)R&AayOCvlmc z?bn)sw*4EJ^HoO4KwTpAr0hM?49azkFBbcB-0iDDHLlrBLVoX-$^1Iu>NjSe(VN>eycQy;Y~A zm#%J;d)uAw#;m+T>e&jZrd64{PFw!CU%9t*+TrTHA~|1|0Mn!A1HbL+d?-JU0EEf+7>_v zi`RA9e>eMEGnJa%-uwEd+0jd(hvjm;Vz0m3>b};q=Ay3?xe=6 z*iQ3vy8p#c# Sz6W}ifx*+&&t;ucLK6V4d4E3u literal 0 HcmV?d00001