SmarttableLayout+Toolbra +Fragment

来源:互联网 发布:淘宝怎样退货 编辑:程序博客网 时间:2024/06/16 14:22

四个Fragment都有共同的Toolbar,可写一个Base类,其余Fragment只需继承此Base类即可,避免重复代码。
BaseSupportFragment.java 代码

package com.xl.test;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v7.widget.Toolbar;import android.text.TextUtils;import android.view.View;import android.widget.TextView;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.Unbinder;/** * Created by hushendian on 2017/7/19. */public class BaseSupportFragment extends Fragment {    @Nullable    @BindView(R.id.toolbar)    public Toolbar toolbarView;    @Nullable    @BindView(R.id.toolbar_title)    public TextView toolbarTitleView;    Unbinder unbinder;    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        unbinder = ButterKnife.bind(this, view);        if (toolbarTitleView != null && !TextUtils.isEmpty(getTitle())) {            toolbarTitleView.setText(getTitle());        }    }    protected String getTitle() {        return "";    }    @Override    public void onDestroy() {        super.onDestroy();        unbinder.unbind();    }}

LazyFragment.java 预加载代码:

package com.xl.test;/** * Created by hushendian on 2017/7/19. */public abstract class LazyFragment extends BaseSupportFragment {    protected boolean isVisible;    @Override    public void setUserVisibleHint(boolean isVisibleToUser) {        super.setUserVisibleHint(isVisibleToUser);        if (getUserVisibleHint()) {            isVisible = true;            onVisible();        } else {            isVisible = false;            onInvisible();        }    }    protected abstract void onInvisible();    protected void onVisible() {        lazyLoad();    }    protected abstract void lazyLoad();}

碎片Fragmentt代码:

package com.xl.test;import android.os.Bundle;import android.support.annotation.Nullable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;/** * Created by hushendian on 2017/7/19. */public class RecommendedFragment extends LazyFragment {    private boolean isPrepared;    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable            Bundle savedInstanceState) {        return inflater.inflate(R.layout.layout, container, false);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        isPrepared = true;        lazyLoad();    }    @Override    protected String getTitle() {        return getString(R.string.recommended);    }    @Override    protected void onInvisible() {    }    @Override    protected void lazyLoad() {        if (!isPrepared || !isVisible) {            return;        }        //todo 执行加载数据操作    }}

同理 多个Activity有共同的toolbar,避免代码重复需要一个Base基类:

package com.xl.test;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.NavUtils;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.text.TextUtils;import android.view.View;import android.widget.TextView;import butterknife.BindView;import butterknife.ButterKnife;/** * Created by hushendian on 2017/7/19. */public abstract class BaseActivity extends AppCompatActivity {    @Nullable    @BindView(R.id.toolbar)    Toolbar toolbarView;    @Nullable    @BindView(R.id.toolbar_title)    TextView toolbarTitleView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(getLayoutResId());        ButterKnife.bind(this);        initToolbar();    }    private void initToolbar() {        if (toolbarView == null) {            return;        }        setSupportActionBar(toolbarView);        if (toolbarTitleView != null) {            getSupportActionBar().setDisplayShowTitleEnabled(true);        }        if (!TextUtils.isEmpty(NavUtils.getParentActivityName(this))) {            getSupportActionBar().setDisplayHomeAsUpEnabled(true);            getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_back);            toolbarView.setNavigationOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    finish();                }            });        }    }    protected abstract int getLayoutResId();}

Activity代码:

package com.xl.test;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.ogaclejapan.smarttablayout.SmartTabLayout;import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter;import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems;import butterknife.BindView;public class MainActivity extends BaseActivity {    @BindView(R.id.viewpager)    ViewPager viewPager;    @BindView(R.id.viewpagertab)    SmartTabLayout viewpagerTab;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setupTabView();    }    @Override    protected int getLayoutResId() {        return R.layout.activity_main;    }    protected void setupTabView() {        final LayoutInflater inflater = LayoutInflater.from(this);        final int[] tabIcons = {R.drawable.ic_recommended, R.drawable.ic_topics, R.drawable                .ic_wiki, R.drawable.ic_me};        FragmentPagerItems pages = FragmentPagerItems.with(this)                .add(R.string.recommended, RecommendedFragment.class)                .add(R.string.topics, TopicsFragment.class)                .add(R.string.wiki, WikiFragment.class)                .add(R.string.me, MeFragment.class)                .create();        FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(                getSupportFragmentManager(),                pages);//        viewPager.setOffscreenPageLimit(pages.size());        viewPager.setAdapter(adapter);        viewpagerTab.setCustomTabView(new SmartTabLayout.TabProvider() {            @Override            public View createTabView(ViewGroup container, int position, PagerAdapter                    pagerAdapter) {                View view = inflater.inflate(R.layout.custom_tab_icon, container, false);                ImageView iconView = (ImageView) view.findViewById(R.id.iv_icon);                iconView.setBackgroundResource(tabIcons[position % tabIcons.length]);                return view;            }        });        viewpagerTab.setViewPager(viewPager);    }}

这里写图片描述
github地址:https://github.com/hushendian/toolbar.git