android 仿微信5版本实现滑动导航条
16lz
2021-01-23
ViewPageAdapter.java
packagecom.rong;importjava.util.ArrayList;importjava.util.List;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.view.View;publicclassViewPagerAdapterextendsPagerAdapter{privateList<View>views;publicViewPagerAdapter(List<View>views){this.views=views;}@OverridepublicintgetCount(){returnviews.size();}@OverridepublicbooleanisViewFromObject(Viewarg0,Objectarg1){returnarg0==arg1;}@OverridepublicvoiddestroyItem(Viewcontainer,intposition,Objectobject){((ViewPager)container).removeView(views.get(position));}@OverridepublicObjectinstantiateItem(Viewcontainer,intposition){((ViewPager)container).addView(views.get(position));returnviews.get(position);}/***插入一个View到viewpager中**@paramview*@return*/publicbooleaninsert(Viewview){if(this.views==null){this.views=newArrayList<View>();}returnthis.views.add(view);}}
HomeAcitivity.java
packagecom.rong;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.util.DisplayMetrics;importandroid.util.Log;importandroid.view.Display;importandroid.view.View;importandroid.view.ViewGroup.LayoutParams;importandroid.widget.LinearLayout;importcom.rong.wechat5.R;publicclassHomeActivityextendsActivity{privateViewhome_line;privateintscreenWidth1_3;privateViewPagerhome_vp;privateViewPagerAdapterviewPagerAdapter;privateList<View>views=newArrayList<View>();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.layout_home);initView();}privatevoidinitView(){Displaydisplay=getWindow().getWindowManager().getDefaultDisplay();DisplayMetricsdm=newDisplayMetrics();display.getMetrics(dm);home_line=(View)findViewById(R.id.home_line);home_vp=(ViewPager)findViewById(R.id.home_vp);LayoutParamslp=home_line.getLayoutParams();screenWidth1_3=dm.widthPixels/3;lp.width=screenWidth1_3;lp.height=5;home_line.setLayoutParams(lp);Viewlayout1=View.inflate(this,R.layout.layout_view1,null);Viewlayout2=View.inflate(this,R.layout.layout_view2,null);Viewlayout3=View.inflate(this,R.layout.layout_view3,null);views.add(layout1);views.add(layout2);views.add(layout3);viewPagerAdapter=newViewPagerAdapter(views);home_vp.setAdapter(viewPagerAdapter);home_vp.setOnPageChangeListener(newOnPageChangeListener(){@OverridepublicvoidonPageSelected(intarg0){}@OverridepublicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels){Log.i("TAG",position+"=="+positionOffset+"=="+positionOffsetPixels);LinearLayout.LayoutParamslp=(android.widget.LinearLayout.LayoutParams)home_line.getLayoutParams();lp.leftMargin=(int)(screenWidth1_3*position+screenWidth1_3*positionOffset);home_line.setLayoutParams(lp);}@OverridepublicvoidonPageScrollStateChanged(intarg0){}});}}
layout_home.xml
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="消息"android:textColor="#000000"android:textSize="24sp"/></RelativeLayout><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="朋友圈"android:textColor="#000000"android:textSize="24sp"/></RelativeLayout><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="我"android:textColor="#000000"android:textSize="24sp"/></RelativeLayout></LinearLayout><Viewandroid:id="@+id/home_line"android:layout_width="0dp"android:layout_height="0dp"android:background="#ff0000"/><android.support.v4.view.ViewPagerandroid:id="@+id/home_vp"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/></LinearLayout>
更多相关文章
- Android 如何让程序定时进行消息通知到通知栏
- Android:媒体按键消息
- Android仿QQ消息导航UI
- Android 微信朋友圈多图分享,不用申请key,不用第三方sdk
- Android Handler:子线程发消息到UI主线程
- Android消息推送机制调研
- Android消息循环机制源码分析
- Android消息机制之四---Looper,Handler,Message例子
- Android 消息机制 进程调度问题