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
阅读全文
0 0
- SmarttableLayout+Toolbra +Fragment
- Fragment
- Fragment
- fragment
- Fragment
- Fragment
- Fragment
- Fragment
- fragment
- fragment
- Fragment
- Fragment
- fragment
- Fragment
- Fragment
- Fragment
- Fragment
- Fragment
- 本机eclipse连接本机centos虚拟机安装好的redis
- 558D
- RabbitMQ学习(1) RabbitMQ介绍
- 使用sessionStorage实现页面间传值与传对象
- JavaScript异步控制 ---- Promise的一个简单使用场景
- SmarttableLayout+Toolbra +Fragment
- PHP Storm 配置laravel
- 对字符的排序
- PHP(2)-wamp的mysql
- vs 无法断点调试的解决办法
- [译]Android架构组件
- 设置IP地址,主机映射,主机名
- 关于 Mac OS系统中编程时出现的segment error 和bus error原因描述
- 向GitHub上传代码(学习记录)