圆点导航的实现参照上一篇博文:https://blog.csdn.net/xialong_927/article/details/80332024
1、viewpager + FragmentActivity
布局文件common_activity_step4.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/theme_bg" android:orientation="vertical"> <com.view.CustomMenuBar android:id="@+id/menubar" android:layout_width="match_parent" android:layout_height="wrap_content" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <com.view.HorizontalDotNavigation android:id="@+id/dot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="100dp" /> </RelativeLayout> </LinearLayout>
RemoteStep5Activity.java
/** * Created by xl on 2018/4/24. */ public class RemoteStep5Activity extends FragmentActivity { private final static String TAG = RemoteStep5Activity.class.getSimpleName(); private Context mContext; private CustomMenuBar mMenubar; private ViewPager mViewPager; private HorizontalDotNavigation mDotNavigation; private List<Fragment> mListFragment; private int miCurrPager = 0; public final static int[] mContentIds = new int[]{ R.string.msg_install_remote_step4_tip1, R.string.msg_install_remote_step4_tip2, R.string.msg_install_remote_step4_tip3, R.string.msg_install_remote_step4_tip4, R.string.msg_install_remote_step4_tip5, R.string.msg_install_remote_step4_tip6, R.string.msg_install_remote_step4_tip7 }; public final static int[] mBtnTextIds = new int[]{ R.string.t_install_done, R.string.t_install_done, R.string.t_install_done, R.string.t_install_done, R.string.t_install_done, R.string.t_install_done, R.string.t_install_finish }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.common_activity_step4); findView(); init(); } /** * 查找控件 */ private void findView() { mMenubar = (CustomMenuBar) this.findViewById(R.id.menubar); mViewPager = (ViewPager) this.findViewById(R.id.viewpager); mDotNavigation = (HorizontalDotNavigation) this.findViewById(R.id.dot); } /** * 初始化 */ private void init() { // 初始化变量 mContext = this; // 添加Activity到堆栈 AppManager.getAppManager().addActivity(this); // 设置menubar mMenubar.setText(R.string.textview_button_remote); mMenubar.setButtonBackClick(new View.OnClickListener() { @Override public void onClick(View view) { exit(); } }); mMenubar.setButtonSeniorClick(new View.OnClickListener() { @Override public void onClick(View view) { CommonPopupAction.show(mContext, mMenubar); } }); // 初始化list initFragmentList(); // 初始化viewpager mViewPager.setAdapter(new MyFragmentViewPager(getSupportFragmentManager())); mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { // 设置导航 setDotNavigation(position); // 设置当前页 miCurrPager = position; // 开始停止更新 switch (position) { case 0: break; case 1: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); // 设置默认为第一屏 mViewPager.setCurrentItem(0); // 初始化导航 initDotNavigation(mListFragment.size()); } /** * 初始化fragmentlist */ private void initFragmentList() { mListFragment = new ArrayList<>(); for (int i = 0; i < 7; i++) { RemoteStepFragment fragment = new RemoteStepFragment(i); mListFragment.add(fragment); } } /** * ViewPager适配器 * * @author xl */ class MyFragmentViewPager extends FragmentPagerAdapter { public MyFragmentViewPager(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mListFragment.get(position); } @Override public int getCount() { return mListFragment.size(); } } /** * 设置当前页 */ public void setCurrPager(int position){ mViewPager.setCurrentItem(position); } /** * 初始化导航 */ public void initDotNavigation(int sum) { mDotNavigation.setLenght(sum); mDotNavigation.setSelected(0); } /** * 设置导航 */ public void setDotNavigation(int select) { mDotNavigation.setSelected(select); } /** * 跳转页面 */ public void enter() { Intent intent = new Intent(this, StartActivity.class); startActivity(intent); AppManager.getAppManager().finishActivity(this); overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out); } /** * 返回 */ private void exit() { AppManager.getAppManager().finishActivity(this); overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out); } /** * 按键监听 * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { exit(); return true; } if (keyCode == KeyEvent.KEYCODE_MENU) { CommonPopupAction.show(this, mMenubar); return true; } return super.onKeyDown(keyCode, event); } }
2、fragment的实现
布局文件common_fragment_step.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/theme_bg" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv1" android:layout_width="30dp" android:layout_height="30dp" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:background="@drawable/shape_steptext_bg" android:gravity="center" android:text="1" android:textColor="@color/white" android:textSize="17sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:orientation="vertical"> <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:paddingBottom="20dp" android:paddingTop="20dp" android:text="@string/msg_setup_register" android:textColor="@color/white" android:textSize="17sp" /> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="20dp" android:background="@drawable/shape_setup_corners" android:text="@string/t_setup_register" android:textColor="@drawable/remote_selector_text_click" android:textSize="17sp" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="20dp" android:background="@drawable/shape_setup_corners" android:text="@string/t_setup_register" android:textColor="@drawable/remote_selector_text_click" android:textSize="17sp" /> </LinearLayout> </RelativeLayout> </LinearLayout>
RemoteStepFragment.java
/** * 数据采集器下逆变器列表 * * @author xl * */ public class RemoteStepFragment extends Fragment { private final static String TAG = RemoteStepFragment.class.getSimpleName(); private RemoteStep5Activity mActivity; private View mView; private TextView mText1; private TextView mText2; private Button mButton1; private Button mButton2; private int mTag; public RemoteStepFragment() { } public RemoteStepFragment(int tag) { this.mTag = tag; } @Override public void onCreate(Bundle savedInstanceState) { // 仅仅执行一次 super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 可执行多次,每当切换到该页面时执行一次 if (mView == null) { mView = inflater.inflate(R.layout.common_fragment_step, null); findView(); init(); } else { ViewGroup group = (ViewGroup) mView.getParent(); if (group != null) { group.removeView(mView); } } return mView; } /** * 查找控件 */ private void findView() { mText1 = (TextView) mView.findViewById(R.id.tv1); mText2 = (TextView) mView.findViewById(R.id.tv2); mButton1 = (Button) mView.findViewById(R.id.btn1); mButton2 = (Button) mView.findViewById(R.id.btn2); } /** * 初始化 */ private void init() { // 初始化变量 mActivity = (RemoteStep5Activity) getActivity(); // 初始化textview mText1.setVisibility(View.GONE); mText2.setText(RemoteStep5Activity.mContentIds[mTag]); //设置按钮 mButton1.setText(RemoteStep5Activity.mBtnTextIds[mTag]); mButton2.setVisibility(View.GONE); mButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mTag == 6){ mActivity.enter(); }else{ mActivity.setCurrPager(mTag + 1); } } }); } }
如图
完!!!