日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

viewPager开启界面导航之旅

發(fā)布時(shí)間:2025/6/15 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 viewPager开启界面导航之旅 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當(dāng)下載一個app時(shí),首次使用都會出現(xiàn)界面導(dǎo)航頁面,今天就來寫一個簡單的頁面導(dǎo)航,由于本人比較懶,隨便找了一張圖片,你可以按照你的想法換掉,廢話少說,開始界面導(dǎo)航之旅

首先先寫一個不到導(dǎo)航小圓點(diǎn)的界面導(dǎo)航,先單純的使用viewPager實(shí)現(xiàn)界面滑動,然后加入小圓點(diǎn)即可實(shí)現(xiàn)常見的首次登陸出現(xiàn)導(dǎo)航頁面

先上圖,方便大家觀看:


下面貼一下主要代碼:

[java]?view plaincopy
  • package?com.sdufe.thea.guo;??
  • ??
  • import?java.util.ArrayList;??
  • import?java.util.List;??
  • ??
  • import?com.sdufe.thea.guo.adapter.MyNavigationAdapter;??
  • ??
  • import?android.os.Bundle;??
  • import?android.app.Activity;??
  • import?android.support.v4.view.ViewPager;??
  • import?android.support.v4.view.ViewPager.OnPageChangeListener;??
  • import?android.view.LayoutInflater;??
  • import?android.view.Menu;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.view.Window;??
  • import?android.view.WindowManager;??
  • import?android.widget.Button;??
  • import?android.widget.Toast;??
  • ??
  • public?class?MainActivity?extends?Activity?implements?OnClickListener,??
  • ????????OnPageChangeListener?{??
  • ??
  • ????private?List<View>?views;??
  • ????private?ViewPager?viewPager;??
  • ????private?MyNavigationAdapter?adapter;??
  • ????private?View?view01;??
  • ????private?View?view02;??
  • ????private?View?view03;??
  • ??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ??
  • ????????requestWindowFeature(Window.FEATURE_NO_TITLE);??
  • ??
  • ????????setContentView(R.layout.activity_main);??
  • ??
  • ????????getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,??
  • ????????????????WindowManager.LayoutParams.FLAG_FULLSCREEN);??
  • ??
  • ????????viewPager?=?(ViewPager)?findViewById(R.id.viewpager);??
  • ??
  • ????????views?=?new?ArrayList<View>();??
  • ??
  • ????????view01?=?LayoutInflater.from(this).inflate(R.layout.view01,?null);??
  • ????????view02?=?LayoutInflater.from(this).inflate(R.layout.view02,?null);??
  • ????????view03?=?LayoutInflater.from(this).inflate(R.layout.view03,?null);??
  • ????????views.add(view01);??
  • ????????views.add(view02);??
  • ????????views.add(view03);??
  • ??
  • ????????adapter?=?new?MyNavigationAdapter(views);??
  • ??
  • ????????viewPager.setAdapter(adapter);??
  • ????????viewPager.setOnPageChangeListener(this);??
  • ????????Button?begin?=?(Button)?view03.findViewById(R.id.begin);??
  • ??
  • ????????begin.setOnClickListener(this);??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onClick(View?v)?{??
  • ????????Toast.makeText(getApplicationContext(),?"開啟CSND之旅",?Toast.LENGTH_LONG)??
  • ????????????????.show();??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageScrollStateChanged(int?arg0)?{??
  • ??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{??
  • ??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageSelected(int?arg0)?{??
  • ????????viewPager.setCurrentItem(arg0);??
  • ????}??
  • ??
  • }??

  • 以上就是主要代碼了,主要是使用view填充viewpager的控件,對于viewPager的使用跟ListView是差不多的,都遇到個adapter,這里也貼一下adapter的代碼,有疑問的可以留言

    [java]?view plaincopy
  • package?com.sdufe.thea.guo.adapter;??
  • ??
  • import?java.util.List;??
  • ??
  • import?android.support.v4.view.PagerAdapter;??
  • import?android.support.v4.view.ViewPager;??
  • import?android.view.View;??
  • ??
  • public?class?MyNavigationAdapter?extends?PagerAdapter?{??
  • ??????
  • ????List<View>?views;??
  • ??????
  • ????public?MyNavigationAdapter(List<View>?views)?{??
  • ????????super();??
  • ????????this.views?=?views;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?int?getCount()?{??
  • ????????if?(views!=null)?{??
  • ????????????return?views.size();??
  • ????????}??
  • ????????return?0;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?boolean?isViewFromObject(View?arg0,?Object?arg1)?{??
  • ????????return?arg0==arg1;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?destroyItem(View?container,?int?position,?Object?object)?{??
  • ????????((ViewPager)container).removeView(views.get(position));??
  • ????}??
  • ??
  • ????@Override??
  • ????public?Object?instantiateItem(View?container,?int?position)?{??
  • ????????((ViewPager)container).addView(views.get(position));??
  • ????????return?views.get(position);??
  • ????}??
  • ??????
  • ??????
  • ??
  • }??
  • 還有就是viewPager的布局文件了,這里給個查詢viewpager的快速方法,按ctrl+shirft+T,輸入viewPager即可出現(xiàn)你需要的內(nèi)容

    [html]?view plaincopy
  • <RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????xmlns:tools="http://schemas.android.com/tools"??
  • ????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"?/>??
  • ????<!--?小圓點(diǎn)布局?-->??
  • ????<LinearLayout??
  • ????????android:id="@+id/point"??
  • ????????android:layout_width="match_parent"??
  • ????????android:layout_height="wrap_content"??
  • ????????android:layout_alignParentBottom="true"??
  • ????????android:gravity="center"??
  • ????????android:orientation="horizontal"???
  • ????????android:visibility="gone">??
  • ??
  • ????????<ImageView??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"???
  • ????????????android:src="@drawable/point"/>??
  • ????????<ImageView??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"???
  • ????????????android:src="@drawable/point"/>??
  • ????????<ImageView??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"???
  • ????????????android:src="@drawable/point"/>??
  • ????</LinearLayout>??
  • ??
  • </RelativeLayout>??
  • ok用viewPager實(shí)現(xiàn)左右滑動就結(jié)束了,就這么簡單,搞清楚原理實(shí)現(xiàn)起了就很快了


    下面來說一說帶有小圓點(diǎn)的界面導(dǎo)航,也就是你所下載的app首次安裝時(shí)出現(xiàn)的界面導(dǎo)航了


    實(shí)現(xiàn)了基本的左右滑動,實(shí)現(xiàn)小圓點(diǎn)滑動就比較簡單了,首先來個選擇器,用于滑動時(shí)改變小圓點(diǎn)的顏色:

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <selector?xmlns:android="http://schemas.android.com/apk/res/android"?>??
  • ????<item?android:state_enabled="false"?android:drawable="@drawable/indicator_normal"></item>??
  • ????<item?android:state_enabled="true"?android:drawable="@drawable/indicator_highlight"></item>??
  • </selector>??

  • 然后初始化圓點(diǎn),并且在onPageSelected(int arg0)控制圓點(diǎn)背景色的改變

    [java]?view plaincopy
  • package?com.sdufe.thea.guo;??
  • ??
  • import?java.util.ArrayList;??
  • import?java.util.List;??
  • ??
  • import?com.sdufe.thea.guo.adapter.MyNavigationAdapter;??
  • ??
  • import?android.os.Bundle;??
  • import?android.app.Activity;??
  • import?android.support.v4.view.ViewPager;??
  • import?android.support.v4.view.ViewPager.OnPageChangeListener;??
  • import?android.view.LayoutInflater;??
  • import?android.view.Menu;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.view.Window;??
  • import?android.view.WindowManager;??
  • import?android.widget.Button;??
  • import?android.widget.ImageView;??
  • import?android.widget.LinearLayout;??
  • import?android.widget.Toast;??
  • ??
  • public?class?MainActivity?extends?Activity?implements?OnClickListener,??
  • ????????OnPageChangeListener?{??
  • ??
  • ????private?List<View>?views;??
  • ????private?ViewPager?viewPager;??
  • ????private?MyNavigationAdapter?adapter;??
  • ????private?View?view01;??
  • ????private?View?view02;??
  • ????private?View?view03;??
  • ????private?LinearLayout?points;??
  • ????private?ImageView[]?point;??
  • ????private?int?currentItem;??
  • ??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ??
  • ????????requestWindowFeature(Window.FEATURE_NO_TITLE);??
  • ??
  • ????????setContentView(R.layout.activity_main);??
  • ??
  • ????????getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,??
  • ????????????????WindowManager.LayoutParams.FLAG_FULLSCREEN);??
  • ??
  • ????????viewPager?=?(ViewPager)?findViewById(R.id.viewpager);??
  • ??
  • ????????views?=?new?ArrayList<View>();??
  • ??
  • ????????view01?=?LayoutInflater.from(this).inflate(R.layout.view01,?null);??
  • ????????view02?=?LayoutInflater.from(this).inflate(R.layout.view02,?null);??
  • ????????view03?=?LayoutInflater.from(this).inflate(R.layout.view03,?null);??
  • ????????views.add(view01);??
  • ????????views.add(view02);??
  • ????????views.add(view03);??
  • ??
  • ????????adapter?=?new?MyNavigationAdapter(views);??
  • ??
  • ????????viewPager.setAdapter(adapter);??
  • ????????viewPager.setOnPageChangeListener(this);??
  • ????????Button?begin?=?(Button)?view03.findViewById(R.id.begin);??
  • ??
  • ????????begin.setOnClickListener(this);??
  • ??????????
  • ????????initPoint();??
  • ????}??
  • ??
  • ????private?void?initPoint()?{??
  • ????????points=(LinearLayout)?findViewById(R.id.point);??
  • ????????point=new?ImageView[views.size()];??
  • ??????????
  • ????????for?(int?i?=?0;?i?<?views.size();?i++)?{??
  • ????????????point[i]=(ImageView)?points.getChildAt(i);??
  • ????????????point[i].setEnabled(false);??
  • ????????????point[i].setTag(i);??
  • ????????}??
  • ??????????
  • ????????currentItem=0;??
  • ????????point[currentItem].setEnabled(true);??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onClick(View?v)?{??
  • ????????Toast.makeText(getApplicationContext(),?"開啟CSND之旅",?Toast.LENGTH_LONG)??
  • ????????????????.show();??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageScrollStateChanged(int?arg0)?{??
  • ??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageScrolled(int?arg0,?float?arg1,?int?arg2)?{??
  • ??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onPageSelected(int?arg0)?{??
  • ????????point[currentItem].setEnabled(false);??
  • ????????point[arg0].setEnabled(true);??
  • ????????currentItem=arg0;??
  • ????}??
  • ??
  • }??


  • 結(jié)束,有疑問的留言我會回答你的問題


    代碼下載地址:http://download.csdn.net/detail/elinavampire/8166773

    總結(jié)

    以上是生活随笔為你收集整理的viewPager开启界面导航之旅的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。