Browse Source

feat: 🐺 替代方案

master
niushuai233 1 year ago
parent
commit
0d6889a492
  1. 38
      app/src/main/java/cc/niushuai/dididone/ui/statistic/MyFragment.java
  2. 169
      app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java
  3. 68
      app/src/main/res/layout/fragment_statistic.xml
  4. 14
      app/src/main/res/layout/fragment_test.xml

38
app/src/main/java/cc/niushuai/dididone/ui/statistic/MyFragment.java

@ -0,0 +1,38 @@
package cc.niushuai.dididone.ui.statistic;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import cc.niushuai.dididone.R;
/**
* Created by Administrator on 2016/7/8.
*/
public class MyFragment extends Fragment {
private TextView tv;
private String name;
public MyFragment(String fName) {
this.name = fName;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_test, container, false);
tv = (TextView) view.findViewById(R.id.fragment_tv);
tv.setText(name);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("我变了-" + name);
}
});
return view;
}
}

169
app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java

@ -6,30 +6,23 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.fragment.app.FragmentTransaction;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import cc.niushuai.dididone.R;
import cc.niushuai.dididone.databinding.FragmentStatisticBinding; import cc.niushuai.dididone.databinding.FragmentStatisticBinding;
import cc.niushuai.dididone.ui.base.BaseFragment; import cc.niushuai.dididone.ui.base.BaseFragment;
import cc.niushuai.dididone.ui.statistic.charts.BaseChartFragment;
import cc.niushuai.dididone.ui.statistic.charts.ListFragment;
import cc.niushuai.dididone.ui.statistic.charts.MonthFragment;
import cc.niushuai.dididone.ui.statistic.charts.OtherFragment;
import cc.niushuai.dididone.ui.statistic.charts.WeekFragment;
import cc.niushuai.dididone.util.XLog; import cc.niushuai.dididone.util.XLog;
public class StatisticFragment extends BaseFragment { public class StatisticFragment extends BaseFragment implements View.OnClickListener {
private FragmentStatisticBinding binding; private FragmentStatisticBinding binding;
private List<BaseChartFragment> fragments = new ArrayList<>(4);;
//三个fragment
private MyFragment f1;
private MyFragment f2;
private MyFragment f3;
private MyFragment f4;
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
@ -40,38 +33,136 @@ public class StatisticFragment extends BaseFragment {
binding = FragmentStatisticBinding.inflate(inflater, container, false); binding = FragmentStatisticBinding.inflate(inflater, container, false);
View root = binding.getRoot(); View root = binding.getRoot();
ViewPager viewPager = binding.statViewpager; return root;
// SlidingTabLayout tabLayout = binding.statTabLayout; }
TabLayout tabLayout = binding.statTabLayout;
@Override
public void init() {
initFragment1();
}
@Override
public void setListeners() {
binding.btn1.setOnClickListener(this);
binding.btn2.setOnClickListener(this);
binding.btn3.setOnClickListener(this);
binding.btn4.setOnClickListener(this);
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
//显示第一个fragment
private void initFragment1() {
//开启事务,fragment的控制是由事务来实现的
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
//第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个
if (f1 == null) {
f1 = new MyFragment("消息");
transaction.add(R.id.main_frame_layout, f1);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f1);
//第二种方式(replace),初始化fragment
// if(f1 == null){
// f1 = new MyFragment("消息");
// }
// transaction.replace(R.id.main_frame_layout, f1);
//提交事务
transaction.commit();
}
//显示第二个fragment
private void initFragment2() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
// 初始化所有的fragment if (f2 == null) {
if (fragments.isEmpty()) { f2 = new MyFragment("联系人");
fragments.add(new ListFragment()); transaction.add(R.id.main_frame_layout, f2);
fragments.add(new WeekFragment());
fragments.add(new MonthFragment());
fragments.add(new OtherFragment());
} }
hideFragment(transaction);
transaction.show(f2);
// if(f2 == null) {
// f2 = new MyFragment("联系人");
// }
// transaction.replace(R.id.main_frame_layout, f2);
viewPager.setOffscreenPageLimit(1); transaction.commit();
}
MyPagerAdapter adapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragments); //显示第三个fragment
//绑定adapter private void initFragment3() {
viewPager.setAdapter(adapter); FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
//绑定viewPager
List<String> titles = fragments.stream().map(BaseChartFragment::getTitle).collect(Collectors.toList());
tabLayout.setupWithViewPager(viewPager);
//设置标题 if (f3 == null) {
for (int i = 0; i < titles.size(); i++) { f3 = new MyFragment("动态");
tabLayout.getTabAt(i).setText(titles.get(i)); transaction.add(R.id.main_frame_layout, f3);
} }
hideFragment(transaction);
transaction.show(f3);
return root; // if(f3 == null) {
// f3 = new MyFragment("动态");
// }
// transaction.replace(R.id.main_frame_layout, f3);
transaction.commit();
}
//显示第三个fragment
private void initFragment4() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
if (f4 == null) {
f4 = new MyFragment("其他");
transaction.add(R.id.main_frame_layout, f4);
}
hideFragment(transaction);
transaction.show(f4);
// if(f3 == null) {
// f3 = new MyFragment("动态");
// }
// transaction.replace(R.id.main_frame_layout, f3);
transaction.commit();
}
//隐藏所有的fragment
private void hideFragment(FragmentTransaction transaction) {
if (f1 != null) {
transaction.hide(f1);
}
if (f2 != null) {
transaction.hide(f2);
}
if (f3 != null) {
transaction.hide(f3);
}
if (f4 != null) {
transaction.hide(f4);
}
} }
@Override @Override
public void onDestroyView() { public void onClick(View v) {
super.onDestroyView(); if (v == binding.btn1) {
binding = null; initFragment1();
} else if (v == binding.btn2) {
initFragment2();
} else if (v == binding.btn3) {
initFragment3();
} else if (v == binding.btn4) {
initFragment4();
}
} }
} }

68
app/src/main/res/layout/fragment_statistic.xml

@ -1,38 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tl="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.tabs.TabLayout <LinearLayout
android:id="@+id/stat_tab_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="48dp">
/>
<!-- stat_tab_layout --> <Button
<!--<com.flyco.tablayout.SlidingTabLayout android:id="@+id/btn1"
android:id="@+id/stat_tab_layout2" android:layout_width="0dp"
android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_height="48dp" android:layout_weight="1"
android:background="#EEEEEE" android:background="#ffffff"
tl:tl_divider_color="#1A000000" android:text="消息" />
tl:tl_divider_padding="13dp"
tl:tl_divider_width="1dp" <Button
tl:tl_indicator_color="#000000" android:id="@+id/btn2"
tl:tl_indicator_height="1.5dp" android:layout_width="0dp"
tl:tl_indicator_width_equal_title="true" android:layout_height="match_parent"
tl:tl_tab_padding="22dp" android:layout_weight="1"
tl:tl_tab_space_equal="true" android:background="#ffffff"
tl:tl_textBold="SELECT" android:text="联系人" />
tl:tl_textSelectColor="@color/red"
tl:tl_textUnselectColor="@color/gray_light_less" <Button
tl:tl_underline_height="2dp" />--> android:id="@+id/btn3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="动态" />
<Button
android:id="@+id/btn4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="其他" />
</LinearLayout>
<androidx.viewpager.widget.ViewPager <FrameLayout
android:id="@+id/stat_viewpager" android:id="@+id/main_frame_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0px" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@android:color/white" /> android:background="#dddddd"></FrameLayout>
</LinearLayout> </LinearLayout>

14
app/src/main/res/layout/fragment_test.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#dddddd">
<TextView
android:id="@+id/fragment_tv"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"/>
</RelativeLayout>
Loading…
Cancel
Save