日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

viewPager开启界面导航之旅

發布時間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 viewPager开启界面导航之旅 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

首先先寫一個不到導航小圓點的界面導航,先單純的使用viewPager實現界面滑動,然后加入小圓點即可實現常見的首次登陸出現導航頁面

先上圖,方便大家觀看:


下面貼一下主要代碼:

[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即可出現你需要的內容

    [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"?/>??
  • ????<!--?小圓點布局?-->??
  • ????<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實現左右滑動就結束了,就這么簡單,搞清楚原理實現起了就很快了


    下面來說一說帶有小圓點的界面導航,也就是你所下載的app首次安裝時出現的界面導航了


    實現了基本的左右滑動,實現小圓點滑動就比較簡單了,首先來個選擇器,用于滑動時改變小圓點的顏色:

    [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>??

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

    [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;??
  • ????}??
  • ??
  • }??


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


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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。