利用ViewPager建立多个关卡,左右切换

这是主activity:

public class BActivity extends Activity {

private ViewPager viewPager;

private TextView text, text2, text3;

private MyViewPager myPager;

private List<View> mList;

private View view1, view2, view3;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initText();

initViewPager();

}

//初始化textView

public void initText() {

text = (TextView) findViewById(R.id.text);

text2 = (TextView) findViewById(R.id.text2);

text3 = (TextView) findViewById(R.id.text3);

text.setOnClickListener(new MyOnClickListerImpl(0));

text2.setOnClickListener(new MyOnClickListerImpl(1));

text3.setOnClickListener(new MyOnClickListerImpl(2));

}

//TextView的监听事件

private class MyOnClickListerImpl implements OnClickListener {

int index = 0 ;

public MyOnClickListerImpl(int i){

index = i ;

}

@Override

public void onClick(View v) {

viewPager.setCurrentItem(index);

}

}

//初始化viewPager

public void initViewPager() {

viewPager = (ViewPager) findViewById(R.id.viewPager);

view1 = LayoutInflater.from(BActivity.this).inflate(

R.layout.show_content, null);

view2 = LayoutInflater.from(BActivity.this).inflate(

R.layout.show_content2, null);

view3 = LayoutInflater.from(BActivity.this).inflate(

R.layout.show_content3, null);

mList = new ArrayList<View>();

mList.add(view1);

mList.add(view2);

mList.add(view3);

myPager = new MyViewPager(mList);

viewPager.setAdapter(myPager);

viewPager.setCurrentItem(0);

viewPager.setOnPageChangeListener(new OnPageChangeListenerImpl());

}

private class OnPageChangeListenerImpl implements OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

/*

* 此方法是改变状态的时候调用,arg0有三个值,分别是0、1、2 当为0的时候说明说明都没做, 当为1的时候说明正在滑动

* 当为2的时候说明已经滑动完成

*/

}

@Override

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

/*

* 这个方法是滑动的时候调用的, 第一个参数是当前页面 ,第二个参数是当前页面偏移的百分比, 第三个页面是当前页面偏移的像素位置

*/

}

@Override

public void onPageSelected(int arg0) {

// 此方法是页面跳转完成之后调用,参数的意思是,当前旋转的position,点击选中的position

switch (arg0) {

case 0:

text.setTextColor(getResources().getColor(R.color.whi));

text2.setTextColor(getResources().getColor(R.color.back));

text3.setTextColor(getResources().getColor(R.color.back));

break;

case 1:

text.setTextColor(getResources().getColor(R.color.back));

text2.setTextColor(getResources().getColor(R.color.whi));

text3.setTextColor(getResources().getColor(R.color.back));

break;

case 2:

text.setTextColor(getResources().getColor(R.color.back));

text2.setTextColor(getResources().getColor(R.color.back));

text3.setTextColor(getResources().getColor(R.color.whi));

break;

default:

break;

}

}

}

这是main.xml:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#FFFFFF" >

<LinearLayout

android:id="@+id/line"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:background="#888888" >

<TextView

android:id="@+id/text"

android:layout_width="0sp"

android:layout_height="wrap_content"

android:layout_margin="10sp"

android:layout_weight="1"

android:gravity="center_horizontal"

android:text="关卡一"

android:textColor="#FFFFFF"

android:textSize="20sp" />

<TextView

android:id="@+id/text2"

android:layout_width="0sp"

android:layout_height="wrap_content"

android:layout_margin="10sp"

android:layout_weight="1"

android:gravity="center_horizontal"

android:text="关卡二"

android:textColor="#000000"

android:textSize="20sp" />

<TextView

android:id="@+id/text3"

android:layout_width="0sp"

android:layout_height="wrap_content"

android:layout_margin="10sp"

android:layout_weight="1"

android:gravity="center_horizontal"

android:text="关卡三"

android:textColor="#000000"

android:textSize="20sp" />

</LinearLayout>

<android.support.v4.view.ViewPager

android:id="@+id/viewPager"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@id/line" />

</RelativeLayout>

这是MyViewPager:

package your.namespace;

import java.util.List;

import android.support.v4.view.PagerAdapter;

import android.view.View;

import android.view.ViewGroup;

public class MyViewPager extends PagerAdapter {

private List<View> mList;

public MyViewPager(List<View> mList) {

this.mList = mList;

}

@Override

public int getCount() {

// 返回mList中包含view的所有view的个数

return mList.size();

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

// 删除mList中的某一个view

container.removeView(mList.get(position));

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

// 添加一个view到mList中

container.addView(mList.get(position), 0);

return mList.get(position);

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

}

时间: 2024-10-26 01:54:27

利用ViewPager建立多个关卡,左右切换的相关文章

Android 利用ViewPager实现底部圆点导航左右滑动效果以及Fragment页面切换

上一篇博文我们介绍了利用ViewPager和Fragment实现顶部滑块左右滑动效果,具体参考(http://blog.csdn.net/a123demi/article/details/39480385). 而本篇博文将实例讲解利用ViewPager实现底部圆点导航左右滑动效果,以及被滑动界面实现监听事件,同时通过Fragment实现页面的切换. 对于该效果的实现,需要实现以下几个问题: 1. 底部圆点加载和实现方法? 2. 怎样实现左右滑动效果? 3. 被滑动页面,怎样实现监听事件? 4.

利用ViewPager实现3D画廊效果及其图片加载优化

前言 对于ViewPager,相信大家都已经很熟悉了,在各种切换场景比如Fragment切换.选项卡的切换或者顶部轮播图片等都可以用ViewPager去实现.那么本篇文章带来ViewPager的一种实现效果:3D画廊.直接上图来看: 从上面的图我们可以看出,整个页面分成三个部分,中间的是大图,正中地显示给用户:而两边的是侧图,而这两幅图片又有着角度的旋转,与大图看起来不在同一平面上,这就形成了3D效果.接着拖动页面,侧面的图慢慢移到中间,这个过程也是有着动画的,包括了图片的旋转.缩放和平移.在欣

Android利用ViewPager实现滑动广告板

•android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api.而ViewPager就是其中之 一,利用它我们可以做很多事情,从最简单的导航,到页面切换菜单等等. •ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样. •本Demo向大家演示ViewPager的使用,并在用户未滑动View时,每隔5s钟自动切换到下一个View(循环切换),而当用户有Touch到

利用TortoiseSVN建立本地SVN库

Svn有很多常用功能,比如代码比较,回退,还原,归档等等,很多时候我们想使用到这些svn功能,但又不想大费周章建立服务端SVN库.其中,建立svn库主要有两种办法,一种就是装服务端版svn软件,另一种就是文章所讲的,利用TortoiseSVN建立本地SVN库. 前提是你已安装了TortoiseSVN这个客户端版本的svn工具,下载地址猛击这里 建立一个新的文件夹,这里命名为local_svn,然后,右键这个文件夹,选择TortoiseSVN菜单,选择 Create repositiory her

java 利用NIO建立Socket服务器

Socket的Channel在Selector上注册某一种动作,Selector通过select操作,监视所有在该Selector注册过的Channel的对应的动作,如果监测到某一对应的动作,则返回selectedKeys,自己手动取到各个SelectionKey进行相应的处理.当然NIO不仅可以接受Socket的Channel,还有文件操作等其他IO操作. AD: WOT2015 互联网运维与开发者大会 热销抢票 传统的Java 的IO,利用Socket建立服务器,接收客户端连接,一般都是为每

自定义View 之利用ViewPager 实现画廊效果(滑动放大缩小)

自定义View 之利用ViewPager 实现画廊效果(滑动放大缩小) 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52315008 本文出自:[Alex_MaHao的博客] 项目中的源码已经共享到github,有需要者请移步[Alex_MaHao的github] 基本介绍 画廊在很多的App设计中都有,如下图所示: 该例子是我没事的时候写的一个小项目,具体源码地址请访问https://github.com/AlexSmille/Y

利用ThreadLocal建立高质量事务处理

ThreadLocal此类是一个以当前线程为key的map对象的构想. 当我们在web开发中,多个浏览器访问的时候,servlet为它们各开线程执行相应代码,而事务的执行依赖于特定的一个Connection对象当中.所以用到了ThreadLocal类来封装<Connection>来取和放. 业务逻辑中不出现 Connection对象,代码风格好 数据库表 1 create table account 2 ( id int primary key, 3 name varchar(20), 4 f

利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI

原文:利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密码:1te1 地图数据包(sqlserver2008R2版本,也可以不下载):? https://pan.baidu.com/s/1PjcNamad7OVpCrsVJ7dwFQ密码:uw9r 下载 核心SDK升级包:https://pan.baidu.com/s/1Q3dlM-Va-RmlE

利用WPF建立自己的3d gis软件(非axhost方式)(四)在地图上添加FrameworkElement

原文:利用WPF建立自己的3d gis软件(非axhost方式)(四)在地图上添加FrameworkElement 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密码:1te1 地图数据包(sqlserver2008R2版本,也可以不下载):? https://pan.baidu.com/s/1PjcNamad7OVpCrsVJ7dwFQ密码:uw9r 下载 核心SDK升级包:https://pan.baidu.com/s/1Q3d