您的位置:首页 > 其它

ViewPager欢迎页面

2016-01-12 11:54 441 查看
一、要实现什么样的功能:

打开程序首先进入欢迎页面,停留两秒进入引导页面
滑动到最后一张引导页面点击按钮进入主页面
第二次打开程序,进入欢迎页面后不进入引导页面,而是直接跳转到主页面

二、程序图片:

三、主要代码:

欢迎页面代码:WelcomeAct.java

package com.jikexueyuan.viewpagerdemo;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;

public class WelcomeAct extends Activity {

private boolean isFirstIn = false;
private static final int TIME = 2000;
private static final int GO_HOME = 1000;
private static final int GO_GUIDE = 1001;

private Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case GO_HOME:
goHome();
break;

case GO_GUIDE:
goGuide();
break;
}

};
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
init();
}

private void init(){
SharedPreferences perPreferences = getSharedPreferences("jike", MODE_PRIVATE);
isFirstIn = perPreferences.getBoolean("isFirstIn", true);
if (!isFirstIn) {
mHandler.sendEmptyMessageDelayed(GO_HOME, TIME);
}else{
mHandler.sendEmptyMessageDelayed(GO_GUIDE, TIME);
/*
* 储存isFirstIn的值
*/
Editor editor = perPreferences.edit();
editor.putBoolean("isFirstIn", false);
editor.commit();
}

}

private void goHome(){
Intent i = new Intent(WelcomeAct.this,MainActivity.class);
startActivity(i);
finish();
}
private void goGuide(){
Intent i = new Intent(WelcomeAct.this,Guide.class);
startActivity(i);
finish();
}

}


欢迎页面:Guide.java

package com.jikexueyuan.viewpagerdemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class Guide extends Activity implements OnPageChangeListener//监听viewpager的滑动事件接口
{

private ViewPager vp;
private ViewPagerAdapter vpAdapter;
private List<View> views;
private ImageView[] dots;
private int[] ids = { R.id.iv1, R.id.iv2, R.id.iv3 };
private Button start_btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.guide);
setViews();
setDots();
}

private void setViews() {
LayoutInflater inflater = LayoutInflater.from(this);
views = new ArrayList<View>();//先将view进行实例化操作
views.add(inflater.inflate(R.layout.one, null));
views.add(inflater.inflate(R.layout.two, null));
views.add(inflater.inflate(R.layout.three, null));

//将dadapter实例化
vpAdapter = new ViewPagerAdapter(views, this);
vp = (ViewPager) findViewById(R.id.viewpager);
vp.setAdapter(vpAdapter);
start_btn = (Button) views.get(2).findViewById(R.id.start_btn);
start_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent i = new Intent(Guide.this, MainActivity.class);
startActivity(i);
finish();
}
});

vp.setOnPageChangeListener(this);
}

private void setDots() {
dots = new ImageView[views.size()];
/*
* 找到三个点的id
*/
for (int i = 0; i < views.size(); i++) {
dots[i] = (ImageView) findViewById(ids[i]);
}
}

@Override
public void onPageScrollStateChanged(int arg0) {

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < ids.length; i++) {
if (arg0 == i) {
dots[i].setImageResource(R.drawable.login_point_selected);
} else {
dots[i].setImageResource(R.drawable.login_point);
}
}
}

}
ViewPagerAdpater.java:

package com.jikexueyuan.viewpagerdemo;

import java.util.List;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;

public class ViewPagerAdapter extends PagerAdapter {

private List<View> views;
private Context context;

public ViewPagerAdapter(List<View> views, Context context) {
this.views = views;
this.context = context;
}

/*
* 索引
*/
@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);

}

/*
* 所有view的集合个数
*/
@Override
public int getCount() {
return views.size();
}

/*
* 判断view是否当前需要的对象
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return (arg0 == arg1);
}

}


引导页面布局:guide.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000" >
</android.support.v4.view.ViewPager>

<LinearLayout
android:id="@+id/ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal" >

<ImageView
android:id="@+id/iv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_point_selected" />

<ImageView
android:id="@+id/iv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_point" />

<ImageView
android:id="@+id/iv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_point" />
</LinearLayout>

</RelativeLayout>
iv1,iv2,iv3为引导页面里的三个点,iv1默认为当前点;
三个子引导页面就贴three.xml,此页面比其余两个多一个Button:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/guide_3" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal" >

<Button
android:id="@+id/start_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="进入" />
</LinearLayout>

</RelativeLayout>


四、GameOver
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: