• ViewPager实现与小圆点联动,并且实现自动轮播


    1.activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.myapplication.MainActivity">
    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="180dp">
    <android.support.v4.view.ViewPager
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>
    <LinearLayout
    android:layout_width="match_parent"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:background="#66000000"
    android:layout_height="30dp">
    <LinearLayout
    android:id="@+id/point_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:gravity="center"
    >
    </LinearLayout>
    </LinearLayout>
    </RelativeLayout>
    </RelativeLayout>

    2.E:studio spaceMyApplicationappsrcmain esdrawableg_shape.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <corners android:radius="5dp"/>
    <solid android:color="#FFFFFF"/>
    </shape>
    3.E:studio spaceMyApplicationappsrcmain esdrawableg_shape2.xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <corners android:radius="5dp"/>
    <solid android:color="#808080"/>
    </shape>

    4.E:studio spaceMyApplicationappsrcmain esdrawableic_launcher_background.xml
    <?xml version="1.0" encoding="utf-8"?>
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportHeight="108"
    android:viewportWidth="108">
    <path
    android:fillColor="#26A69A"
    android:pathData="M0,0h108v108h-108z" />
    <path
    android:fillColor="#00000000"
    android:pathData="M9,0L9,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M19,0L19,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M29,0L29,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M39,0L39,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M49,0L49,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M59,0L59,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M69,0L69,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M79,0L79,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" />
    <path
    android:fillColor="#00000000"
    android:pathData="M89,0L89,108"
    android:strokeColor="#33FFFFFF"
    android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M99,0L99,108" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,9L108,9" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,19L108,19" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,29L108,29" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,39L108,39" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,49L108,49" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,59L108,59" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,69L108,69" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,79L108,79" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,89L108,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M0,99L108,99" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,29L89,29" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,39L89,39" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,49L89,49" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,59L89,59" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,69L89,69" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M19,79L89,79" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M29,19L29,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M39,19L39,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M49,19L49,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M59,19L59,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M69,19L69,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> <path android:fillColor="#00000000" android:pathData="M79,19L79,89" android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /></vector>

    5.E:studio spaceMyApplicationappsrcmain esdrawableselector.xml
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:drawable="@drawable/bg_shape"/>
    <item android:state_enabled="false" android:drawable="@drawable/bg_shape2"/>
    </selector>

    6.MainActivity.class
    package com.example.administrator.myapplication;

    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;

    import java.util.ArrayList;

    public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
    private ViewPager vp;
    private int[] imas;
    private LinearLayout ll;
    private ArrayList<ImageView> imaList;
    private Boolean flag;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化布局
    initViews();
    //数据
    initData();

    //适配器
    initAdapter();
    flag = true;
    //实现自动轮播
    new Thread(new Runnable() {
    @Override
    public void run() {

    while (flag) {
    try {
    Thread.sleep(2000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    vp.setCurrentItem(vp.getCurrentItem() + 1);
    }
    });
    }
    }
    }).start();
    }

    private void initAdapter() {
    ll.getChildAt(0).setEnabled(true);
    vp.setAdapter(new MyAdapter());
    vp.setCurrentItem(Integer.MAX_VALUE / 2 + 2);//这里以一个%50的数开始,这样打开默认会在第0item显示
    }

    @Override
    protected void onDestroy() {
    super.onDestroy();
    flag = false;
    }

    private void initData() {
    }

    private void initViews() {
    vp = (ViewPager) findViewById(R.id.vp);
    vp.setOnPageChangeListener(this);
    ll = (LinearLayout) findViewById(R.id.point_container);
    //图片数组
    imas = new int[]{R.mipmap.card1, R.mipmap.card2, R.mipmap.card3, R.mipmap.card4, R.mipmap.card5};
    ImageView iv;
    imaList = new ArrayList<ImageView>();
    View pointview;
    for (int i = 0; i < imas.length; i++) {
    iv = new ImageView(this);
    iv.setImageResource(imas[i]);
    imaList.add(iv);

    //加小白点
    pointview = new View(this);
    pointview.setEnabled(false); pointview.setBackgroundResource(R.drawable.selector); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(15, 15); //params.gravity= Gravity.CENTER; if (i != 0) params.leftMargin = 10; ll.addView(pointview, params); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < ll.getChildCount(); i++) { ll.getChildAt(i).setEnabled(false); } ll.getChildAt(position % 5).setEnabled(true);//设置小白点 } @Override public void onPageScrollStateChanged(int state) { } class MyAdapter extends PagerAdapter { @Override public Object instantiateItem(ViewGroup container, int position) { int newposition = position % 5;//得到新位置 ImageView imageView = imaList.get(newposition); container.addView(imageView); return imageView;//把View对象返回给框架,必须重写 } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override //判断复用 public boolean isViewFromObject(View view, Object object) { return view == object; } }}




  • 相关阅读:
    武汉大学数学专业考研试题参考解答
    中山大学数学专业考研试题参考解答
    北京大学数学专业考研试题参考解答汇总
    一些泛函分析题目
    人生感言
    数学分析高等代数考研试题荟萃[更新至2017年12月28日]
    数学分析高等代数考研试题荟萃[更新至2017年12月15日]
    2017-2018-1 实变函数
    2017-2018-1 点集拓扑
    Latex "Error: Extra alignment tab has been changed to cr. "
  • 原文地址:https://www.cnblogs.com/xiaoshumiao/p/8863349.html
Copyright © 2020-2023  润新知