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 0000000..1467898 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_home_selected.png differ 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 0000000..8176aea Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_home_selected_not.png differ 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 0000000..0843897 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png b/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png new file mode 100644 index 0000000..0446265 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_instrument_selected_not.png differ 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 0000000..138a982 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_me_selected.png differ 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 0000000..aad4106 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_me_selected_not.png differ