ViewPager欢迎页面
2016-01-12 11:54
441 查看
一、要实现什么样的功能:
打开程序首先进入欢迎页面,停留两秒进入引导页面
滑动到最后一张引导页面点击按钮进入主页面
第二次打开程序,进入欢迎页面后不进入引导页面,而是直接跳转到主页面
二、程序图片:
三、主要代码:
欢迎页面代码:WelcomeAct.java
欢迎页面:Guide.java
引导页面布局:guide.xml
三个子引导页面就贴three.xml,此页面比其余两个多一个Button:
四、GameOver
打开程序首先进入欢迎页面,停留两秒进入引导页面
滑动到最后一张引导页面点击按钮进入主页面
第二次打开程序,进入欢迎页面后不进入引导页面,而是直接跳转到主页面
二、程序图片:
三、主要代码:
欢迎页面代码: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
相关文章推荐
- Web 安全浅谈
- Eclipse + Maven创建webapp项目
- 使用DBMS_SPM包进行SQL基线的生成和更新
- 细说php完美分页类
- 细说php完美分页类
- http://blog.sina.com.cn/s/blog_7ed3ed3d01018pbd.html
- 欢迎使用CSDN-markdown编辑器
- 你不知道的JAVA
- OCR替换,先add再replace可以么?
- css忽略某一层的存在:pointer-events:none
- 学习mongo系列(四) find().pretty() remove()
- mycat 主从复制 步骤
- SIMATIC Net介绍
- shell中的各种括号的使用方法
- js删除数组中的元素delete和splice的区别
- 让JAVA代码跑得更快
- Struts2中DMI(动态方法调用)的一些问题
- 数据库_MySQL_MySQL中的begin-end流程控制语句与局部变量
- 【JavaWeb Structs2学习】 用Action接受参数
- jQuery.merge( first, second )