zoukankan      html  css  js  c++  java
  • Banner无限轮播

    activity_main.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">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="200dp">
    
            <android.support.v4.view.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true" />
    
            <LinearLayout
                android:id="@+id/dotLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="20dp"
                android:gravity="center"
                android:orientation="horizontal" />
    
        </RelativeLayout>
    
    </RelativeLayout>

    selecter.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_enabled="true">
            <shape android:shape="oval">
                <size android:height="10dp" android:width="10dp"></size>
                <solid android:color="#aa000000"></solid>
            </shape>
        </item>
        <item android:state_enabled="false">
            <shape android:shape="oval">
                <size android:height="10dp" android:width="10dp"></size>
                <solid android:color="#aaffffff"></solid>
            </shape>
        </item>
    </selector>
    public class MainActivity extends AppCompatActivity {
    
        private List<ImageView> list;
        private LinearLayout dotLayout;
        private int prePosition;
        private ViewPager viewPager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initData();
            initView();
            //开启一个新线程,实现ViewPager的自动滚动
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //runOnUiThread中的代码运行在主线程中
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                            }
                        });
                    }
                }
            }).start();
        }
    
        private void initView() {
            viewPager = (ViewPager) findViewById(R.id.viewPager);
            //构造适配器
            MyAdapter adapter = new MyAdapter(list);
            //设置Adapter
            viewPager.setAdapter(adapter);
            //设置ViewPager预加载的页数
    //        viewPager.setOffscreenPageLimit(2);
            viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                //ViewPager滑动过程中调用
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                //ViewPager新页面确定后调用
                @Override
                public void onPageSelected(int position) {
                    //设置前一个View为白色
                    dotLayout.getChildAt(prePosition).setEnabled(false);
                    //设置当前View为红色
                    dotLayout.getChildAt(position % list.size()).setEnabled(true);
                    //将当前位置赋给prePosition
                    prePosition = position % list.size();
                }
    
                //ViewPager滑动状态改变后调用
                //0--静止状态
                //1--手在拖动
                //2--手松开后自动滑动
                @Override
                public void onPageScrollStateChanged(int state) {
    
                }
            });
            //设置ViewPager的初始item
            viewPager.setCurrentItem(Integer.MAX_VALUE / 2 - 3);
        }
    
        /**
         * 构造数据源
         */
        private void initData() {
            dotLayout = (LinearLayout) findViewById(R.id.dotLayout);
            list = new ArrayList<>();
            int[] imgs = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e};
            for (int img : imgs) {
                //使用Java代码创建一个ImageView
                ImageView imageView = new ImageView(this);
                //设置图片以及ScaleType属性
                imageView.setImageResource(img);
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                list.add(imageView);
    
                //创建一个View对象
                View view = new View(this);
                //设置View的宽和高
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()));
                //设置View左边距,避免View连在一起
                params.leftMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getResources().getDisplayMetrics());
                view.setLayoutParams(params);
                //设置背景颜色,背景使用selector,可使View在不同状态显示不同颜色
                view.setBackgroundResource(R.drawable.dot_radiobutton_style);
                //默认状态下View的Enable属性为false(View全为白色)
                view.setEnabled(false);
                //将View添加进LinearLayout中
                dotLayout.addView(view);
            }
            //第一个View默认为红色
            dotLayout.getChildAt(0).setEnabled(true);
        }
    
    }

     

  • 相关阅读:
    阐述:SIP协议是什么
    【SIP协议】学习初学笔记
    【协议学习】SIP基本场景分析
    电话的前世今生
    深入浅出SIP协议
    QVariant类及QVariant与自定义数据类型转换的方法
    Qt中如何根据类名来实例化对象
    模板的全特化与偏特化
    为什么c++中,有时可以用类名直接访问非静态成员函数?
    C++引用详解
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5855013.html
Copyright © 2011-2022 走看看