From d82be8bc755579f0c076bccb06ec9f383b9e65bc Mon Sep 17 00:00:00 2001 From: huangwei <983142558@qq.com> Date: Wed, 31 Jul 2024 14:49:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/survey/activity/MainActivity.kt | 88 ++++++++++++++++++ .../fragment/base/BaseFragmentBinding.java | 59 ++++++++++++ .../survey/fragment/home/HomeFragment.kt | 21 +++++ .../fragment/home/InstrumentFragment.kt | 21 +++++ .../survey/fragment/home/MeFragment.kt | 21 +++++ app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/fragment_home.xml | 11 +++ .../main/res/layout/fragment_instrument.xml | 11 +++ app/src/main/res/layout/fragment_me.xml | 11 +++ .../res/mipmap-xxhdpi/icon_home_selected.png | Bin 0 -> 906 bytes .../mipmap-xxhdpi/icon_home_selected_not.png | Bin 0 -> 983 bytes .../icon_instrument_selected.png | Bin 0 -> 954 bytes .../icon_instrument_selected_not.png | Bin 0 -> 963 bytes .../res/mipmap-xxhdpi/icon_me_selected.png | Bin 0 -> 933 bytes .../mipmap-xxhdpi/icon_me_selected_not.png | Bin 0 -> 958 bytes 15 files changed, 245 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/project/survey/fragment/base/BaseFragmentBinding.java create mode 100644 app/src/main/java/com/project/survey/fragment/home/HomeFragment.kt create mode 100644 app/src/main/java/com/project/survey/fragment/home/InstrumentFragment.kt create mode 100644 app/src/main/java/com/project/survey/fragment/home/MeFragment.kt create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_instrument.xml create mode 100644 app/src/main/res/layout/fragment_me.xml create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_home_selected.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_me_selected.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png diff --git a/app/src/main/java/com/project/survey/activity/MainActivity.kt b/app/src/main/java/com/project/survey/activity/MainActivity.kt index f30723e..6dc8fdb 100644 --- a/app/src/main/java/com/project/survey/activity/MainActivity.kt +++ b/app/src/main/java/com/project/survey/activity/MainActivity.kt @@ -1,19 +1,107 @@ package com.project.survey.activity +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bingce.ui.TabEntity +import com.flyco.tablayout.listener.CustomTabEntity +import com.flyco.tablayout.listener.OnTabSelectListener +import com.project.survey.R import com.project.survey.activity.base.BaseBindingActivity import com.project.survey.databinding.ActivityMainBinding +import com.project.survey.fragment.home.HomeFragment +import com.project.survey.fragment.home.InstrumentFragment +import com.project.survey.fragment.home.MeFragment class MainActivity : BaseBindingActivity() { + private val mFragments = mutableListOf() + override fun getBinding(): ActivityMainBinding { return ActivityMainBinding.inflate(layoutInflater) } override fun initView() { + initTabFragment() + + } + + private fun initTabFragment() { + //设置tab + val mTabEntities = ArrayList() + mTabEntities.add( + TabEntity( + "首页", + R.mipmap.icon_home_selected, + R.mipmap.icon_home_selected_not + ) + ) + mTabEntities.add( + TabEntity( + "仪器", + R.mipmap.icon_instrument_selected, + R.mipmap.icon_instrument_selected_not + ) + ) + mTabEntities.add( + TabEntity( + "我的", + R.mipmap.icon_me_selected, + R.mipmap.icon_me_selected_not + ) + ) + mBinding.tabLayout.setTabData(mTabEntities) + + mBinding.tabLayout.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + mBinding.vp.setCurrentItem(position) + } + + override fun onTabReselect(position: Int) { + } + }) + + //设置viewPager + mFragments.add(HomeFragment()) + mFragments.add(InstrumentFragment()) + mFragments.add(MeFragment()) + mBinding.vp.adapter = MyPagerAdapter(supportFragmentManager) + mBinding.vp.offscreenPageLimit = 3 + mBinding.vp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + mBinding.tabLayout.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + } + + }) } override fun initData() { } + + private inner class MyPagerAdapter : FragmentPagerAdapter { + constructor(fm: FragmentManager) : super(fm) + + constructor(fm: FragmentManager, behavior: Int) : super(fm, behavior) + + override fun getItem(position: Int): Fragment { + return mFragments[position] + } + + override fun getCount(): Int { + return mFragments.size + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/fragment/base/BaseFragmentBinding.java b/app/src/main/java/com/project/survey/fragment/base/BaseFragmentBinding.java new file mode 100644 index 0000000..2c1f6ef --- /dev/null +++ b/app/src/main/java/com/project/survey/fragment/base/BaseFragmentBinding.java @@ -0,0 +1,59 @@ +package com.project.survey.fragment.base; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.viewbinding.ViewBinding; + + +public abstract class BaseFragmentBinding extends Fragment { + protected VB mBinding; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBinding = getViewBinding(inflater, container); + return mBinding.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initView(); + initData(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + mBinding = null; + } + + protected abstract VB getViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container); + + protected abstract void initView(); + + protected abstract void initData(); + + protected String getArgumentString(String key) { + Bundle bundle = getArguments(); + if (bundle != null) { + return bundle.getString(key); + } + return null; + } + + protected int getArgumentInt(String key) { + Bundle bundle = getArguments(); + if (bundle != null) { + return bundle.getInt(key); + } + return -1; + } + +} diff --git a/app/src/main/java/com/project/survey/fragment/home/HomeFragment.kt b/app/src/main/java/com/project/survey/fragment/home/HomeFragment.kt new file mode 100644 index 0000000..1bfd077 --- /dev/null +++ b/app/src/main/java/com/project/survey/fragment/home/HomeFragment.kt @@ -0,0 +1,21 @@ +package com.project.survey.fragment.home + +import android.view.LayoutInflater +import android.view.ViewGroup +import com.project.survey.databinding.FragmentHomeBinding +import com.project.survey.fragment.base.BaseFragmentBinding + +class HomeFragment : BaseFragmentBinding() { + override fun getViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } + + override fun initView() { + } + + override fun initData() { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/fragment/home/InstrumentFragment.kt b/app/src/main/java/com/project/survey/fragment/home/InstrumentFragment.kt new file mode 100644 index 0000000..ba9df82 --- /dev/null +++ b/app/src/main/java/com/project/survey/fragment/home/InstrumentFragment.kt @@ -0,0 +1,21 @@ +package com.project.survey.fragment.home + +import android.view.LayoutInflater +import android.view.ViewGroup +import com.project.survey.databinding.FragmentInstrumentBinding +import com.project.survey.fragment.base.BaseFragmentBinding + +class InstrumentFragment : BaseFragmentBinding() { + override fun getViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentInstrumentBinding { + return FragmentInstrumentBinding.inflate(inflater, container, false) + } + + override fun initView() { + } + + override fun initData() { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/fragment/home/MeFragment.kt b/app/src/main/java/com/project/survey/fragment/home/MeFragment.kt new file mode 100644 index 0000000..44f31a1 --- /dev/null +++ b/app/src/main/java/com/project/survey/fragment/home/MeFragment.kt @@ -0,0 +1,21 @@ +package com.project.survey.fragment.home + +import android.view.LayoutInflater +import android.view.ViewGroup +import com.project.survey.databinding.FragmentMeBinding +import com.project.survey.fragment.base.BaseFragmentBinding + +class MeFragment : BaseFragmentBinding() { + override fun getViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMeBinding { + return FragmentMeBinding.inflate(inflater, container, false) + } + + override fun initView() { + } + + override fun initData() { + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d28ed5a..221aa9f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,13 +7,13 @@ android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_instrument.xml b/app/src/main/res/layout/fragment_instrument.xml new file mode 100644 index 0000000..fba0e33 --- /dev/null +++ b/app/src/main/res/layout/fragment_instrument.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml new file mode 100644 index 0000000..87f3ffd --- /dev/null +++ b/app/src/main/res/layout/fragment_me.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/icon_home_selected.png b/app/src/main/res/mipmap-xxhdpi/icon_home_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..1467898e6e050989909bb0289d38b85ccd537d5b GIT binary patch literal 906 zcmV;519kj~P)Px#1am@3R0s$N2z&@+hyVZsG)Y83R9J=Wmp@1waTLeD@0T;lkf8;IY+4W$6lzdw z&RQCw1qY!P99pQWnC!QzjwQg| z%H|+|Md)GAA4J-!}V@%=`04Zyw{mgSAiAl`M!Ngd(^~wVFhqhh;G-)vJ z@?TX3r|$sJ9ykf0$xKY?D*2X>gIkjT>vxQ>omNlouZM5#13;&;=9PqV8H`p#*{Rs< z%@?KAEgCp5u_7J)zCK65BZKR^i);F#;g&<)dS%CROs8J~+}7F|_~@?tGZdZZO;-#! zpzL^##pxUv19}gCak2A>5mpa<@&TX+hU%YPYRyotI5QR8!vST-b3~^RBP=r(Ty?3z z%Zf(BEr+hU)F3k!bPmSA5uHW?%8uFXVyc36xKmm4N^mZN486!a9Si%4I{C7am;%vr zeI9J5k?sAh)^pC5&!7sJv0A*z}?E`Ajq)<^SR)vjwNvI)o9?zhln6jYpdbu^=<19wn!}r7=4q{gg`=r`BwoAmzT?0Y z_{^b$1pqmie3}awDgs3Gx)5Gg831wuuZDdS`Epn~z+Z)`4p_>+q&N}iu}bPb00a#;JHTXijA16Nu$aHUnkEkSO1^yl64FDA9V@KCDP z#scgHxTxwS0J9f@qZbTCL=rFzp$->cGpnj=iK+uGuqAk!xv*jW$c>ct-F?Du3W+1i g#@VuE%U0?72j>I}xX)ve#sB~S07*qoM6N<$f~29I2><{9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png b/app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png new file mode 100644 index 0000000000000000000000000000000000000000..8176aeae2e97daea74e3e849b7fecaf092065101 GIT binary patch literal 983 zcmV;|11S87P)Px#1am@3R0s$N2z&@+hyVZsfk{L`R9J=WR?ll2XAph!tz;BXThp2#(l$RJ)JtkB z>9Hgw+cW_ed`a-O`n1wo|3Q4oB_Sj^YP!y9xbx0wQlVzdime8ib zhY$=67$kcqha}Q!Em^zP+923>($0ME&C}@9>;NG`gy?@rnNy|Ase7SKK?_QmQw8il z0lUPBq}V?IX#C-bC<3BsLuRk_QghcGHss_q z2v=Kzgi5V0ep*_ZeOWG-->B+$zbO$O18}f;hR!8NP7SVBR+e{D*Y{Y{G%fPgp|9r| zlyas1s?|5f3WdU3XHeJm_(1f)Ljb2+3-jX3SN~>9rP8LK`o21>>w5h2!7nTZO}J9O z*XkRW+-3owTCLVp^_wL{iGB;f@iL*2&p!DyIjj!MUOjm3u&(RzX!Jml0QX$I z|KF>BGTl0*Xnxv5*a;nT!~^CgcGeb__-@B^ErT{uJCJ{`J!dbKW@iq`{KyR%-H+AV4Kpvm(`oa3 zyW}>*M#`M9K@VD&nEeLD!CW*_rh9xM;(U-&4gow2qTB4G1DDaE+nH2GvxU&S*buf| zT3B2tbx5x>Fw-nb0C-qRIb>PZ>$ZkJByPKvjI=q~$*?ViM!*d(hHW7Lprhe@e(q*B zjX)Rp{XpLtj&wib4-A&V<~0DY1tkb%1*spnVcS-oCHC75TJ$kQ?(i(%dQxmLq1FFayi?|v#oh!7#V;T-@=7$F*5IEVlM002ovPDHLk FV1i=W#ryyO literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png b/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..08438978565504c1b8bd1b535b71ab5a89d71962 GIT binary patch literal 954 zcmV;r14aCaP)Px#1am@3R0s$N2z&@+hyVZsWJyFpR9J=WS4~J%Q562pb8M!P(qO^}2(`n77Se>uKwMYWboz+P)15NVkMHLw8{z z%ZwSXf6MRnZ~2)qV{!F)v)nCPPns|hw_4ZCd!vb=a4s&bdwx0Z@Q|P;O zNuWS+i-VPXoj_XY2)Tqc4Jpc4XH@Gjm;L3wvh`d*XHQk25MG=NZg`Dal^G)pY~<|>Y%pWQYt*WXlfjKjIgShImQW*$ z-B4=oc+*>hiK(y-0G$J=764dy)xH7%p$GH6%$bH4%*O1(%WEHG>PcTZMok|v`ZH%6 zdOBlErYHvNjt46)x$b=dr+cs#%sHe&E_*>97BpQDN0}IdhboSPpQowBV5yIV8_Fy zCdJ@YORCSwc-xJGeAVdEC!nZ$hCi6dRqvA{->-_Bv4b2M+moQ=d$N3O|ybypu(|Jj*gv3->C(v}! z!i|}q=WdDC7jFsMU%AIzCKiXmpwelj|9`<B3hSho{ostrADPx#1am@3R0s$N2z&@+hyVZsZAnByR9J=WSI=t`K@|SpY?4OtkW0ZzD+*G2u+W3z zrH2R#1-;oqb~j0L>_Jda{{b%^L=Y6bu5FS{sDc-v$DF(<6fp-69*Vyz=%LW6`8m%+ zH_dKpQg>(3gZVDWy!qaIAG5RX?EpgzF~na5g}tDuXRb3*0sx44t6;C(4|DxUn2P}b zh^`TE!uh`eAXLL5%*Fl&{%^yEk(&XKaD@_1EHs2>*fg_u2yz`gh6!@rG_!ZY($T_L z#4r|b5^#F}Wp;Xc=KGsBuV1KYDVMceE|+LF%YXtQr8MQn?cVP%2p)0FcY&;*Ey9%PgPUc79DoPx+-2LYQEr zn{_#F>Y0bp5$&F3b&WRb?HkRyyh?GE5-TJ(i$+FQ+%wo8wPTe7*Rk+rSO|81)7D69TYmC^POI+LWPtjX!{2)F zsn=N002ovPDHLkV1hIKyvP6m literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_me_selected.png b/app/src/main/res/mipmap-xxhdpi/icon_me_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..138a982ebd2c32fcabd6ce3f3357c2448367f304 GIT binary patch literal 933 zcmV;W16urvP)Px#1am@3R0s$N2z&@+hyVZsPf0{UR9J=Wm``X_R}_c8b0;xkvoKI0i%7Fj2pE_d z8_i^zLR_^%-3bbA0&e0YE=0Sk1)(jiD0E?Fl1;&d?h0Mhg$2bCV`gH4GXoK_5LCz_ z;6fJ>({|oHE;@-bFY}zqd#{Kx-)6Y?o^yY{d4KLb_d$ymEn0k3NSKo)CJJ8|%!svi z4}dY|vBhTdlkxjuX@p{UXkwucZJPo{JVLTa`BZLlU@53pV8er{;;<3^1a>wEeQB+8 zcy8+Rd=R}rh7Y73bhpX20?_T6cKN?w?Qx~7l=YwZeCFVaUrpmT5ujbR{Ysx#OC}_Z5DiRb9*nex*R1rPq73&^z=WYexhUYT} zR}i_i-c}e*riy3XamiHititFZdV!U`>psBT0;ro0#_G1veP-=<9sfS}?BEN!e_mEjr>zv6??Vk>+6r)Q_5i_HW#WjK*4To94(fHsei#|jGu9$D4p>H#CtV_~1b0IutS)UdJ)NG2j*6nqR0Wff)s#!+m$ZRHdGlkwQ8h&TBrb6{ryPV5JLor)TE*-l8Y&=q`Z%;Ax2y_U2AH4ICaM3fADn9w2 ze7HXcc(N74ZAhi4d5?T-kA&XW@av-nXlNe}TeN7=;sf9f(yA5VNUWPf00000NkvXX Hu0mjfdz!#I literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png b/app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png new file mode 100644 index 0000000000000000000000000000000000000000..aad4106b0fa94305425dc5674858bafacc1a20fb GIT binary patch literal 958 zcmV;v13~Px#1am@3R0s$N2z&@+hyVZsXh}ptR9J=Wm_LXdbri=x?>D<=kRTQ+S8OnafrGmo z1|k-&5F~|yc81OFxSIhhi&Sc*LPSCg1{(`2Vcfl$HAJv5MT!$ny@29@;qHV(0-~fi zu}P8Qa@qMki{0CQ*>NW`E8?-=X6N_jz2E!n{C@Lzzk#Wynrf`c!7j4(TN>sIHtFkn@-cU$Jzl`H;s+MFhBAizvsFATwcBgP&H z!up{gtRE6%k0^ZGy(`Q0}As++6?T z=+VVUkQcf};R&D!6g$^lDf(Ws*;vYwGZQet#>V=0i;IhYf}A9N#dZ)q8-|UKv*ybT z46w1WzBWI9EHKyzBaZ+N1G@;nqS}bmIn!*`m&eVsFE!DA7@$(AJlQ`E!|?Y>&Yuam zdb;|obttM*6l4yVi*emjbW4O)6S3O(qVZ$eoDU3Ksd!I=eO;7SN3@m6q-?A3C792` z(7!Q0pr^#Z)lzlA8a|0VRiu^bim{w+TyAV8aZdzXsnpJ)`i_Xim93kCtXb?Y^qTiQ z6%1xx(c{oQ>)p?+Ekw?TVf|cY;MXd(j}+b-k!3}YKuvTl2!dhAk#b$PAl7+NQFqiz z30ztV>u;w9?wr@YAK*lTDB{D*370TVrBZbv=g7OjKx1T8pKmrBt8sDv*h?5OF6bU= zOVoKKX!_T(fbOaDhflk1Z3)${puOE3krEIKJg!?i(7TjdOA~_aR}j>%f^@f(_Mc)# zDAOVIzfj`#QdJ9;a_zT&142~`BFQRjV&G0mJDief-0X=x_t%yX)$5vYsU{^+o!E!N gsivB0s{euh258(a;