当下载一个app时,首次使用都会出现界面导航页面,今天就来写一个简单的页面导航,由于本人比较懒,随便找了一张图片,你可以按照你的想法换掉,废话少说,开始界面导航之旅
首先先写一个不到导航小圆点的界面导航,先单纯的使用viewPager实现界面滑动,然后加入小圆点即可实现常见的首次登陆出现导航页面
先上图,方便大家观看:
下面贴一下主要代码:
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); } }
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即可出现你需要的内容
<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首次安装时出现的界面导航了
实现了基本的左右滑动,实现小圆点滑动就比较简单了,首先来个选择器,用于滑动时改变小圆点的颜色:
<?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>
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