注意:channelmanagement是提前写好,导入
依赖
implementation 'com.android.support:design:28.0.0'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
QQ界面:https://blog.youkuaiyun.com/qq_43797842/article/details/85758420
Fragmnet基类
package com.example.luwenjie0119.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* @Auther: 努力
* @Date: 2019/1/17 13:55:${卢文杰}
* @Description:
*/
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(bindlayout(), container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
initData();
bindEvent();
}
//布局
protected abstract int bindlayout();
//控件
protected abstract void initView();
//数据
protected abstract void initData();
//监听
protected abstract void bindEvent();
protected <T extends View> T bindView(int resId) {
return (T) getView().findViewById(resId);
}
}
Fragment页面
package com.example.luwenjie0119.fragment;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
import com.example.luwenjie0119.R;
import com.example.luwenjie0119.fragment.tab.Fragment01;
import com.qy.channel.ChannelActivity;
import com.qy.channel.bean.ChannelItem;
import com.qy.channel.db.DBUtil;
import java.util.ArrayList;
/**
* @Auther: 努力
* @Date: 2019/1/17 13:59:${卢文杰}
* @Description:
*/
public class Fragment_m extends BaseFragment {
private TabLayout tabLayout;
private ViewPager pager;
private ImageView imageView;
private ArrayList<ChannelItem> userChannelList = new ArrayList<ChannelItem>();
private ArrayList<Fragment> list;
@Override
protected int bindlayout() {
return R.layout.fragment_m;
}
@Override
protected void initView() {
//找控件
tabLayout = bindView(R.id.tablayout);
pager = bindView(R.id.pager);
imageView = bindView(R.id.tabImage);
}
@Override
protected void initData() {
//初始化Tab数据
//查询数据库
userChannelList = DBUtil.getTabData(getActivity());
//加载Fragment
list = new ArrayList<>();
for (int i = 0; i < userChannelList.size(); i++) {
ChannelItem channelItem = userChannelList.get(i);
String name = channelItem.getName();
list.add(new Fragment01());
}
}
@Override
protected void bindEvent() {
//设置适配器
pagerAdapter();
//绑定 让viewpager和tabLayout关联
tabLayout.setupWithViewPager(pager);
//点击跳转频道管理
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳转Activity
Intent intent = new Intent(getActivity(), ChannelActivity.class);
//跳转回传
startActivityForResult(intent, 0);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断是不是我们的回传 回传值是0
if (requestCode == 0) {
//查询数据库中的数据 ,找到我们要展示的Tab标签
userChannelList = DBUtil.getTabData(getActivity());
//便利数据(对数据进行刷新操作)
for (int i = 0; i < userChannelList.size(); i++) {
ChannelItem channelItem = userChannelList.get(i);
String name = channelItem.getName();
tabLayout.addTab(tabLayout.newTab().setText(name));
//8设置fragment(可以根据名字创建Fragment)
// if ("北京".equals(tabName)) {
list.add(new Fragment01());
// } else {
.,....
// }
}
}
tabLayout.setupWithViewPager(pager);
pagerAdapter();
}
private void pagerAdapter() {
pager.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return userChannelList.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return userChannelList.get(position).getName();
}
});
}
}
Fragment页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:tabGravity="center"
app:tabMode="scrollable"></android.support.design.widget.TabLayout>
<ImageView
android:id="@+id/tabImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/menu" />
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
</LinearLayout>
注意:频道页面,自己创建新的Fragment页面
效果图