android常用的导航栏 viewpagerindicator简单使用

距离上一篇文章已过去好久了,期间一直想写,但看到csdn上各种大牛的杰作,实在无法直视自己写的,但本着厚脸皮与坚持的原则,继续写!!

这篇博客将记录一下android常用的导航栏,相信大家都不陌生,好看的导航栏能带给用户良好的体现,,用到的是一个优秀的第三方框架,是viewpagerindicator。

先看下效果吧,这是刚进入应用时界面

这里呢,我介绍三种导航栏样式,分别是:1.圆点型 2.文字型 3仿微信型

以上是效果图,现在不会制作gif图,凑合着看吧。。。

一.CirclePageIndicator的简单介绍

以下CirclePageIndicatorActivity的代码

public class CirclePageIndicatorActivity extends FragmentActivity {private ViewPager pager;private CirclePageIndicator indicator;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);pager = (ViewPager) this.findViewById(R.id.ivHomeTop);pager.setAdapter(new MyAdapter(getSupportFragmentManager()));indicator = (CirclePageIndicator) this.findViewById(R.id.dotGuide);indicator.setViewPager(pager);}class MyAdapter extends FragmentPagerAdapter{public MyAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}@Overridepublic Fragment getItem(int arg0) {ShowFragment fragment = new ShowFragment();Bundle bundle = new Bundle();bundle.putString("index", (arg0+1)+"");fragment.setArguments(bundle);return fragment;}@Overridepublic int getCount() {return 3;}}}其中ShowFragment,就是显示每一页,代码很多就不贴代码了。其中布局代码是<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent" xmlns:app=""><android.support.v4.view.ViewPagerandroid:id="@+id/ivHomeTop"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitXY" ></android.support.v4.view.ViewPager><com.viewpagerindicator.CirclePageIndicatorandroid:id="@+id/dotGuide"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"app:fillColor="#FFBB00"app:pageColor="#003C9D"android:layout_centerHorizontal="true"android:layout_marginBottom="8dp" /></RelativeLayout>这里主要引用v4包中的viewpager和第三方框架的CirclePageIndicator,代码很简单,不作解释了。

二.类似与微信的导航栏

这是Activity中的代码

public class WeChatActivity extends FragmentActivity {private View title_bar_cursor,cursor_layout;private Context context;private ViewPager pager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_we_chat);//得到屏幕的宽度DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm); context = this;title_bar_cursor = this.findViewById(R.id.title_bar_cursor);cursor_layout = this.findViewById(R.id.cursor_layout);pager = (ViewPager) this.findViewById(R.id.view_pager);pager.setAdapter(new MyAdapter(getSupportFragmentManager()));//设置导航栏的宽度是整个屏幕的1/3ViewGroup.LayoutParams params = title_bar_cursor.getLayoutParams();params.width = dm.widthPixels / 3;//viewPager的事件监听pager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {final float cursorWidth = title_bar_cursor.getWidth();final float offset = cursorWidth * (position + positionOffset);cursor_layout.scrollTo((int)-offset, 0);}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});}/** * Viewpager适配器 * @author c_fei * */class MyAdapter extends FragmentPagerAdapter{public MyAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}@Overridepublic Fragment getItem(int arg0) {ShowFragment fragment = new ShowFragment();Bundle args = new Bundle();args.putString("index", ""+(arg0+1));fragment.setArguments(args);return fragment;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 3;}}}其中布局文件中的代码是<LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:gravity="center_horizontal"android:layout_height="wrap_content"android:text="聊天"/><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:gravity="center_horizontal"android:layout_height="wrap_content"android:text="动态"/><TextViewandroid:layout_width="0dp"android:layout_weight="1"android:gravity="center_horizontal"android:layout_height="wrap_content"android:text="空间"/> </LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/cursor_layout"android:orientation="horizontal"><Viewandroid:id="@+id/title_bar_cursor"android:layout_width="200dp"android:layout_height="2dp"android:background="#797697" /></LinearLayout><android.support.v4.view.ViewPagerandroid:id="@+id/view_pager"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>使用这种方法做导航栏好处是不需要引用第三方jar包,但是扩展性差点,还有一个好处就是能自定义布局,能按照我们的意愿完成想要的复杂布局。

三.TabPageIndicatorActivity的简单使用

困难是人的教科书。

android常用的导航栏 viewpagerindicator简单使用

相关文章:

你感兴趣的文章:

标签云: