android 使用ViewPager开启应用时左右划动的界面

/**

* 1.在布局中加载viewpager控件android.support.v4.view.ViewPager
* 2.初始化viewpager
* 3.数据源的初始化
* 4.创建适配器 --->继承PagerAdapter 重写4个方法
* 5.绑定适配器
* 6.设置监听事件*/

1.在布局中加载viewpager控件android.support.v4.view.ViewPager

<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"
    tools:context=".MainActivity" >
  添加Viewpager布局
    <android.support.v4.view.ViewPager
        android:id="@+id/vpager"
        android:background="@drawable/guide_1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </android.support.v4.view.ViewPager>

    <Button
        android:id="@+id/enter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:onClick="onEnter"
        android:visibility="gone"
        android:text="enter" />

</RelativeLayout>

4.创建适配器 --->继承PagerAdapter 重写4个方法
主要实现四个方法

  

 public int getCount()   //获取视图中加载的view的个数//判断是否决定一个页面视图与特定的重点对象返回的instantiateitem相关(ViewGroup,int)。该方法是一个PagerAdapter正常需要。
 public boolean isViewFromObject(View arg0, Object arg1)  //添加视图
 public Object instantiateItem(ViewGroup container, int position) //销毁视图
 public void destroyItem(ViewGroup container, int position, Object object)
 
public class MyPagerAdapter extends PagerAdapter {
    private List<View> list;

    public MyPagerAdapter(List<View> list) {
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }
    /**
     * 添加视图
     */
    public Object instantiateItem(ViewGroup container, int position) {
        View v = list.get(position);
        //将View对象添加到ViewGroup中
        container.addView(v);
        return v;
    }
    /**
     * 移除视图
     */
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(list.get(position));
    }

}

 2.初始化viewpager
* 3.数据源的初始化 
* 5.绑定适配器
* 6.设置监听事件

public class MainActivity extends Activity implements OnPageChangeListener {
    private ViewPager viewPager;
    //数据源
    private List<View>  list;
    //适配器
    private MyPagerAdapter adapter;

    Button btn3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn3 = (Button) findViewById(R.id.enter);
        viewPager = (ViewPager) findViewById(R.id.vpager);
        list = new ArrayList<View>();
        ininData();
        adapter = new MyPagerAdapter(list);
        //绑定适配器
        viewPager.setAdapter(adapter);
        //设置监听
        viewPager.setOnPageChangeListener(this);

        /*new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                 Intent intent = new Intent(MainActivity.this, One.class);
                 startActivity(intent);
                 finish();
            }
        }, 3000);*/

    }
    public void ininData(){
        ImageView iv1 = new ImageView(this);
        iv1.setBackgroundResource(R.drawable.guide_1);
        list.add(iv1);
        ImageView iv2 = new ImageView(this);
        iv2.setBackgroundResource(R.drawable.guide_2);
        list.add(iv2);
        ImageView iv3 = new ImageView(this);
        iv3.setBackgroundResource(R.drawable.guide_3);
        list.add(iv3);
        ImageView iv4 = new ImageView(this);
        iv4.setBackgroundResource(R.drawable.guide_4);
        list.add(iv4);
    }

    public void onEnter(View v){
        new Handler().post(new Runnable() {
            @Override
            public void run() {
                 Intent intent = new Intent(MainActivity.this, One.class);
                 startActivity(intent);
                 finish();
            }
        });
    }

    /**
     * 有三种状态(0,1,2)。
     * arg0 ==1的时辰默示正在滑动,
     * arg0==2的时辰默示滑动完毕了,
     * arg0==0的时辰默示什么都没做。
     */
    public void onPageScrollStateChanged(int arg0) {
        Log.i("tag", "onPageScrollStateChanged"+arg0);
    }

    /**
     * arg0 :当前页面,及你点击滑动的页面
       arg1:当前页面偏移的百分比
       arg2:当前页面偏移的像素位置
     */
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        Log.i("tag", "onPageScrolled"+arg0+"-->"+arg1+"--->"+arg2);
    }

    /**
     *   此方法是页面跳转完后得到调用,
     *   arg0是你当前选中的页面的Position(位置编号)。
     */
    public void onPageSelected(int arg0) {
        Log.i("tag", "onPageSelected"+arg0);
        if(arg0 == 3){
            btn3.setVisibility(View.VISIBLE);
        }
    }

}

使用ViewPager 显示上部的广告活动,添加一个异步任务,

使用setCurrentItem(index)设置当前页面

class MyAsyncTask extends AsyncTask<Void, Void, Void>{

        protected Void doInBackground(Void... params) {
            while(true){
                //判断当前的异步任务是否取消
                if(isCancelled()){
                    break;
                }
                try {
                    Thread.sleep(2000);
                    //publishProgress();

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
            return null;
        }
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
            viewPager.setCurrentItem(++index%4);
                if(index==4){
                    Intent intent = new Intent(MainActivity.this, One.class);
                    startActivity(intent);
                    finish();
                    index=0;
                    //viewPager.removeAllViews();

                    //viewPager.setCurrentItem(0);
                    //add();

            }
        }
    }
时间: 2024-10-22 22:18:50

android 使用ViewPager开启应用时左右划动的界面的相关文章

Android - 解决ViewPager使用DepthPageTransformer时事件会被下一页捕获导致事件错乱的问题

实际情况是你在调用 viewPager.setPageTransformer(boolean, PageTransformer)方法设置PageTransformer时第一个参数给的false,应该设置true才对. 这是因为ViewPager默认下一个页面是绘制在上一个页面的上面,DepthPageTransformer对下一个页面的处理是只设为全透明,但还是位于屏幕中央.这样一来下一个页面虽然看不见,但实际上是存在于上一个页面的上面的,理所当然就会拦截事件. 而第一个参数的意思就是是否要反转

android viewpager fragment切换时界面卡顿解决办法

目前开发的程序在切换View时界面卡顿现象比较严重,影响用户体验,当前项目共就四个View,每个View也只是按钮,所以可以同时加载,不让其它view销毁. 只需在Adapter中重载destroyItem类即可 @Override public void destroyItem(ViewGroup container, int position, Object object) { //重载该方法,防止其它视图被销毁,防止加载视图卡顿 //super.destroyItem(container,

Android使用ViewPager做轮播

ViewPager.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 0 10px; padding: 8px 10px 0; font: 13.34px/1.4 helvetica, arial, freesans, clean, sans-serif; width: 452px; background-color: #fff } div.oembedall-git

Android 6.0的运行时权限

原文  http://droidyue.com/blog/2016/01/17/understanding-marshmallow-runtime-permission/ 主题 安卓开发 Android 6.0,代号棉花糖,自发布伊始,其主要的特征运行时权限就很受关注.因为这一特征不仅改善了用户对于应用的使用体验,还使得应用开发者在实践开发中需要做出改变. 没有深入了解运行时权限的开发者通常会有很多疑问,比如什么是运行时权限,哪些是运行时的权限,我的应用是不是会在6.0系统上各种崩溃呢,如何才能

Android 自定义 ViewPager 打造千变万化的图片切换效果

Android 自定义 ViewPager 打造千变万化的图片切换效果 标签: Android自定义ViewPagerJazzyViewPager 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPa

【转】android 自定义ViewPager,修改原动画

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如何改变ViewPager 切换时的效果,实现个性化的图片切换~~ 看一下这样效果的图片切换: 是

Android重写ViewPager修改滑动灵敏度

使用ViewPager作为一个页面进行切换,里面可以存放很多View,但有时在操作View时不小心滑动一下就有可能跳到下一页,这并不是我们想要的,这里就需要重写ViewPager修改它的滑动条件 效果图 程序目录结构 BTViewPager.java package com.example.viewpagerdemo; import android.content.Context; import android.support.v4.view.ViewPager; import android.

聊一聊 Android 6.0 的运行时权限

权限一刀切 棉花糖运行时权限 权限的分组 正常权限 正常权限列表 特殊权限危险权限 请求SYSTEM_ALERT_WINDOW 请求WRITE_SETTINGS 必须要支持运行时权限么 不支持运行时权限会崩溃么 然而有点糟糕的是 该来的还得来 一个标准的流程 如何批量申请 申请这么多权限岂不是很累 注意事项两个权限 API问题 多系统问题 些许建议 注意 Android 6.0,代号棉花糖,自发布伊始,其主要的特征运行时权限就很受关注.因为这一特征不仅改善了用户对于应用的使用体验,还使得应用开发

Android中ViewPager与HorizontalListView的滑动冲突处理

Android开发中,有不少的控件都有点击或滑动冲突事件,比如ListView的onitemclick事件与item上的Button(如果有Button的话)等.今天在工作中用ViewPager里面的页面套用HorizontalListView,横向 划动也有冲突,解决办法很简单,只要在HorizontalListView中重写onInterceptTouchEvent(MotionEvent ev)方法中添加 getParent().requestDisallowInterceptTouchE