Android ViewPager实现页面左右切换效果

 更新时间:2022年04月24日 11:06:04   作者:被遗忘的秋天  
这篇文章主要为大家详细介绍了Android ViewPager实现页面左右切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android ViewPager实现页面左右切换的具体代码,供大家参考,具体内容如下

主界面viewpager.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
     <LinearLayout
        android:id="@+id/linearLayout01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        <include android:id="@+id/item_header"
                layout="@layout/item_header" />
        <android.support.v4.view.ViewPager
            android:id="@+id/guidePages"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        
       </LinearLayout>
       
    <LinearLayout
        android:id="@+id/linearLayout01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        
    <RelativeLayout  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:orientation="vertical" >
        
    <LinearLayout  
        android:id="@+id/viewGroup"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:layout_alignParentBottom="true"  
        android:layout_marginBottom="40dp"  
        android:gravity="center_horizontal"  
        android:orientation="horizontal" >  
        
    </LinearLayout>  
    
    </RelativeLayout>
    </LinearLayout>
</FrameLayout>

处理ViewPager的类:MyGuideViewActivity.java

package com.example.wenandroid;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
 
/**
 * Android实现左右滑动指引效果
 * @Description: Android实现左右滑动指引效果
 * @File: MyGuideViewActivity.java
 * @Package com.test.guide
 * @Author Hanyonglu
 * @Date 2012-4-6 下午11:15:18
 * @Version V1.0
 */
public class MyGuideViewActivity extends Activity {
     private ViewPager viewPager;  
     private ArrayList<View> pageViews;  
     private ImageView imageView;  
     private ImageView[] imageViews; 
     // 包裹滑动图片LinearLayout
     private ViewGroup main;
     // 包裹小圆点的LinearLayout
     private ViewGroup group;
        
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置无标题窗口
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        
        LayoutInflater inflater = getLayoutInflater();  
        pageViews = new ArrayList<View>();  
        pageViews.add(inflater.inflate(R.layout.item05, null));
        pageViews.add(inflater.inflate(R.layout.item06, null));
        pageViews.add(inflater.inflate(R.layout.item01, null));  
        pageViews.add(inflater.inflate(R.layout.item02, null));  
        pageViews.add(inflater.inflate(R.layout.item03, null));  
        pageViews.add(inflater.inflate(R.layout.item04, null));  
        
        imageViews = new ImageView[pageViews.size()];  
        main = (ViewGroup)inflater.inflate(R.layout.viewpager, null);  
        
        group = (ViewGroup)main.findViewById(R.id.viewGroup);  
        viewPager = (ViewPager)main.findViewById(R.id.guidePages);  
        
        for (int i = 0; i < pageViews.size(); i++) {  
            imageView = new ImageView(MyGuideViewActivity.this);  
            imageView.setLayoutParams(new LayoutParams(20,20));  
            imageView.setPadding(20, 0, 20, 0);  
            imageViews[i] = imageView;  
            
            if (i == 0) {  
                //默认选中第一张图片
                imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);  
            } else {  
                imageViews[i].setBackgroundResource(R.drawable.page_indicator);  
            }  
            
            group.addView(imageViews[i]);  
        }  
        
        setContentView(main);
        
        viewPager.setAdapter(new GuidePageAdapter());  
        viewPager.setOnPageChangeListener(new GuidePageChangeListener());  
    }
    
    // 指引页面数据适配器
    class GuidePageAdapter extends PagerAdapter {  
        
        @Override  
        public int getCount() {  
            return pageViews.size();  
        }  
  
        @Override  
        public boolean isViewFromObject(View arg0, Object arg1) {  
            return arg0 == arg1;  
        }  
  
        @Override  
        public int getItemPosition(Object object) {  
            return super.getItemPosition(object);  
        }  
  
        @Override  
        public void destroyItem(View arg0, int arg1, Object arg2) {  
            ((ViewPager) arg0).removeView(pageViews.get(arg1));  
        }  
  
        @Override  
        public Object instantiateItem(View arg0, int arg1) {  
            ((ViewPager) arg0).addView(pageViews.get(arg1));  
            return pageViews.get(arg1);  
        }  
  
        @Override  
        public void restoreState(Parcelable arg0, ClassLoader arg1) {  
  
        }  
  
        @Override  
        public Parcelable saveState() {  
            return null;  
        }  
  
        @Override  
        public void startUpdate(View arg0) {  
  
        }  
  
        @Override  
        public void finishUpdate(View arg0) {  
  
        }  
    } 
    
    // 指引页面更改事件监听器
    class GuidePageChangeListener implements OnPageChangeListener {  
          
        @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 < imageViews.length; i++) {  
                imageViews[arg0].setBackgroundResource(R.drawable.page_indicator_focused);
                
                if (arg0 != i) {  
                    imageViews[i].setBackgroundResource(R.drawable.page_indicator);  
                }  
            }
        }  
    }  
}

其中page_indicator_focused图片为:,即当选中单个页面时,下标变红。
page_iindicator图片为:,当未选中页面时,未选中的页面全部为黄色。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android实现一个简单带动画的展开收起功能

    Android实现一个简单带动画的展开收起功能

    今天给大家带来一个展开和收起的简单效果,如果只是代码中简单设置显示或隐藏,熟悉安卓系统的朋友都知道,那一定是闪现,所以笔者结合了动画,使得体验效果瞬间提升一个档次,感兴趣的小伙伴可以自己动手试一试
    2023-08-08
  • Android自定义Dialog内部透明、外部遮罩效果

    Android自定义Dialog内部透明、外部遮罩效果

    这篇文章主要为大家详细介绍了Android自定义Dialog内部透明、外部遮罩效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android 代码写控件代替XML简单实例

    Android 代码写控件代替XML简单实例

    这篇文章主要介绍了Android 代码写控件代替XML简单实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • Kotlin基础学习之lambda中return语句详解

    Kotlin基础学习之lambda中return语句详解

    这篇文章主要给大家介绍了关于Kotlin基础学习之lambda中return语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或使用Kotlin具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Android TextView多文本折叠展开效果

    Android TextView多文本折叠展开效果

    这篇文章主要为大家详细介绍了Android TextView多文本折叠展开效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Flutter RSA加密解密的示例代码

    Flutter RSA加密解密的示例代码

    数据加密有对称加密(对称密钥方案) 和非对称加密(公钥加密) 两种加密方式,本文主要介绍了Flutter RSA加密解密的示例代码,感兴趣的可以了解一下
    2022-04-04
  • Android编程之光线传感器用法详解

    Android编程之光线传感器用法详解

    这篇文章主要介绍了Android编程之光线传感器用法,结合实例形式分析了Android光线传感器的功能、实现步骤与相关注意事项,并给出了相关demo示例,需要的朋友可以参考下
    2017-11-11
  • Android编程实现简单的UDP Client实例

    Android编程实现简单的UDP Client实例

    这篇文章主要介绍了Android编程实现简单的UDP Client,结合实例形式分析了Android实现UDP Clinet客户端的实现技巧,需要的朋友可以参考下
    2016-04-04
  • Android AIDL实现两个APP间的跨进程通信实例

    Android AIDL实现两个APP间的跨进程通信实例

    这篇文章主要为大家详细介绍了Android AIDL实现两个APP间的跨进程通信实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android实用控件自定义逼真相机光圈View

    Android实用控件自定义逼真相机光圈View

    这篇文章主要为大家详细介绍了Android实用控件自定义逼真相机光圈,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论