加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android ViewPager循环左右自动滑动加载Page

发布时间:2020-12-14 23:30:06 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package zhangphil.auto_viewpager; import java.util.ArrayList; import android.support.v4.app.Fragment; import android.support.v4.app.Fragment

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    package zhangphil.auto_viewpager;  
      
    import java.util.ArrayList;  
    import android.support.v4.app.Fragment;  
    import android.support.v4.app.FragmentManager;  
    import android.support.v4.app.FragmentPagerAdapter;  
    import android.support.v4.view.ViewPager;  
    import android.support.v7.app.ActionBarActivity;  
    import android.view.Gravity;  
    import android.view.LayoutInflater;  
    import android.view.View;  
    import android.view.ViewGroup;  
    import android.widget.TextView;  
    import android.graphics.Color;  
    import android.os.Bundle;  
    import android.os.Handler;  
    import android.os.Message;  
    import android.os.SystemClock;  
      
    /** 
     * Android ViewPager循环左右自动滑动加载Page。 
     *   
     * 核心关键:使用 ViewPager的setCurrentItem(int index)左右自动循环加载。 
     * 思路:使用Android Handler,在Handler的handleMessage(Message msg)中收消息,收到消息就从msg中解析出需要加载的索引。 
     * 相应的,开辟一个线程,时隔两秒就用Handler发一个Message,触发Handler的handleMessage,从而调用ViewPager的setCurrentItem操作. 
     */  
      
    public class MainActivity extends ActionBarActivity {  
      
        private ViewPager mViewPager;  
      
        private final static String ID = "id";  
        private ArrayList<Fragment> mArrayList;  
      
        // 用以显示的Fragment总数,假设有5个.  
        private final int SIZE = 5;  
      
        private Handler handler;  
        private final int WHAT = 0xf01;  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
      
            mArrayList = new ArrayList<Fragment>();  
            for (int i = 0; i < SIZE; i++) {  
                Fragment f = new TestFragment();  
                Bundle b = new Bundle();  
                b.putInt(ID,i);  
                f.setArguments(b);  
                mArrayList.add(f);  
            }  
      
            mViewPager = (ViewPager) findViewById(R.id.viewpager);  
            FragmentPagerAdapter mPagerAdapter = new MyFragmentPagerAdapter(  
                    getSupportFragmentManager());  
            mViewPager.setAdapter(mPagerAdapter);  
      
            handler = new Handler() {  
                @Override  
                public void handleMessage(Message msg) {  
                    switch (msg.what) {  
                    case WHAT:  
                        int index = (Integer) msg.obj;  
                        mViewPager.setCurrentItem(index);  
                        break;  
                    }  
                }  
            };  
      
            new Thread(new Runnable() {  
      
                @Override  
                public void run() {  
      
                    int i = 0;  
                    while (true) {  
                        // 当超过SIZE后,回绕,从头开始循环。  
                        i = i % SIZE;  
      
                        Message message = new Message();  
                        message.what = WHAT;  
                        message.obj = i;  
                        handler.sendMessage(message);  
      
                        // 休息两秒。  
                        SystemClock.sleep(2000);  
      
                        i++;  
                    }  
                }  
            }).start();  
        }  
      
        private class MyFragmentPagerAdapter extends FragmentPagerAdapter {  
      
            public MyFragmentPagerAdapter(FragmentManager fm) {  
                super(fm);  
            }  
      
            @Override  
            public Fragment getItem(int pos) {  
                return mArrayList.get(pos);  
            }  
      
            @Override  
            public int getCount() {  
                return mArrayList.size();  
            }  
        }  
      
        // 测试的Fragmnt,只显示一个Id,用于区别不同的Fragment。  
        public static class TestFragment extends Fragment {  
      
            private int Id;  
      
            @Override  
            public void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
      
                Bundle b = this.getArguments();  
                Id = b.getInt(ID);  
            }  
      
            @Override  
            public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {  
      
                TextView tv = new TextView(getActivity());  
                String str = "id: " + Id;  
                tv.setTextColor(Color.LTGRAY);  
                tv.setText(str);  
                tv.setTextSize(50);  
                tv.setGravity(Gravity.CENTER);  
      
                return tv;  
            }  
        }  
    }  

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:orientation="vertical" >  
      
        <FrameLayout  
            android:layout_width="match_parent"  
            android:layout_height="match_parent"  
            android:layout_weight="1" >  
      
            <android.support.v4.view.ViewPager  
                android:id="@+id/viewpager"  
                android:layout_width="match_parent"  
                android:layout_height="match_parent" />  
        </FrameLayout>  
      
      
    </LinearLayout>  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读