1.今天看了别人的文章,以前从来没用过的控件,感觉还不错,所以自己想学习下如何使用.
2.这里简单介绍ViewPger Fragment BottomNavigationBar的使用
Fragment:
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class MyFragment extends Fragment { String name = ""; public MyFragment() { super(); } public MyFragment setName(String name){ this.name = name; return this; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LayoutInflater i = LayoutInflater.from(getActivity()); View f = i.inflate(R.layout.ff, null); final TextView tw = (TextView) f.findViewById(R.id.text1); Button dianjia = (Button) f.findViewById(R.id.button1); dianjia.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tw.setText("235253325235"); } }); tw.setText(name); return f; } }
ViewPager adapter:
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import java.util.List; public class MyAdapter extends FragmentStatePagerAdapter { List<Fragment> lists; public MyAdapter(FragmentManager fm, List<Fragment> lists) { super(fm); this.lists = lists; } @Override public int getCount() { return lists.size(); } @Override public Fragment getItem(int position) { return lists.get(position); } }
layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> </android.support.v4.view.ViewPager> <com.ashokvarma.bottomnavigation.BottomNavigationBar android:id="@+id/bottombar" android:layout_width="match_parent" android:layout_height="wrap_content"> </com.ashokvarma.bottomnavigation.BottomNavigationBar> </LinearLayout>
activity:
import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import com.ashokvarma.bottomnavigation.BottomNavigationBar; import com.ashokvarma.bottomnavigation.BottomNavigationItem; import com.ashokvarma.bottomnavigation.ShapeBadgeItem; import com.ashokvarma.bottomnavigation.TextBadgeItem; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener { private TextBadgeItem mTextBadgeItem; private ShapeBadgeItem mShapeBadgeItem; int i = 3; ViewPager pager; List<Fragment> lists; BottomNavigationBar bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextBadgeItem = new TextBadgeItem() .setBorderWidth(4) .setBackgroundColorResource(R.color.colorAccent) .setAnimationDuration(200) .setText("3") .setHideOnSelect(false); mShapeBadgeItem = new ShapeBadgeItem() .setShapeColorResource(R.color.colorPrimary) .setGravity(Gravity.TOP | Gravity.END) .setHideOnSelect(false); //初始化viewpager lists = new ArrayList<>(); lists.add(new MyFragment().setName("首页")); lists.add(new MyFragment().setName("音乐")); lists.add(new MyFragment().setName("电影")); lists.add(new MyFragment().setName("游戏")); pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(new MyAdapter(getSupportFragmentManager() , lists)); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { bar.selectTab(position); } @Override public void onPageScrollStateChanged(int state) { } }); //初始化bottomnavigationbar bar = (BottomNavigationBar) findViewById(R.id.bottombar); bar.setTabSelectedListener(this); bar.setMode(BottomNavigationBar.MODE_SHIFTING) //MODE_SHIFTING MODE_FIXED .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC); bar.addItem(new BottomNavigationItem(R.drawable.page1one , "首页").setBadgeItem(mTextBadgeItem)) .addItem(new BottomNavigationItem(R.drawable.page2one , "音乐").setBadgeItem(mShapeBadgeItem)) .addItem(new BottomNavigationItem(R.drawable.page4one , "电影")) .addItem(new BottomNavigationItem(R.drawable.page5one , "游戏")) .setActiveColor(R.color.color1) .setInActiveColor(R.color.color2) .setBarBackgroundColor(R.color.color3) .setFirstSelectedPosition(0) .initialise(); } @Override public void onTabSelected(int position) { mTextBadgeItem.setText("" + i++); //改变右上角消息提示数目 pager.setCurrentItem(position); } @Override public void onTabUnselected(int position) { } @Override public void onTabReselected(int position) { } }
效果如下:
若是bar.setMode();
MODE_FIXED
效果如下:
3.BottomNavigationBar还有一种用法是什么去了,我一下忘记了,之后碰到再补充