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还有一种用法是什么去了,我一下忘记了,之后碰到再补充