当下载一个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);
- }
- }
以上就是主要代码了,主要是使用view填充viewpager的控件,对于viewPager的使用跟ListView是差不多的,都遇到个adapter,这里也贴一下adapter的代码,有疑问的可以留言
- 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);
- }
- }
- <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>
下面来说一说带有小圆点的界面导航,也就是你所下载的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>
然后初始化圆点,并且在onPageSelected(int arg0)控制圆点背景色的改变
- 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.youkuaiyun.com/detail/elinavampire/8166773