ViewPager+小圆点

xiaoxiao2025-10-22  13

package com.example.day13rk;

import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private ArrayList<ImageView> imageViews = new ArrayList(); private int[] imageResIds = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, }; //图片字符串数组String[]资源. private String[] descs = { "巩俐不低俗,我就不能低俗", "扑树又回来啦!再唱经典老歌引万人大合唱", "揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀", }; private LinearLayout ll_dot; private TextView viewPager_tv; private ViewPager viewPager_vp; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: viewPager_vp.setCurrentItem(viewPager_vp.getCurrentItem()+1); break; } handler.sendEmptyMessageDelayed(0,2000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { //找可以设置点的容器LinearLayout的对象,进行点的添加 ll_dot = findViewById(R.id.ll_dot); //找到文本的对象 viewPager_tv = findViewById(R.id.viewPager_tv); //找到VIewPager对象. viewPager_vp = findViewById(R.id.viewPager_vp); for(int i = 0 ; i < imageResIds.length; i++){ //创建ImageView对象 ImageView imageView = new ImageView(this); //通过该对象添加图片资源..setBackgroundResource方法 imageView.setBackgroundResource(imageResIds[i]); //把控件添加到集合ImageViews中去,以方便在VIewPager的适配器里instantiateItem方法获取 imageViews.add(imageView); //进行点的添加,其个数和图片的个数一致,因此放到该循环中 createDot(); } //设置适配器 viewPager_vp.setAdapter(new MyViewpagerAdapter(MainActivity.this,imageViews)); //滑动监听 viewPager_vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { //同过getCurrentItem方法拿到当前用户所交互ViewPager的item位置. int currentItem = viewPager_vp.getCurrentItem(); changeTextAndDot(currentItem%imageResIds.length); } @Override public void onPageSelected(int i) { int position = i % imageViews.size(); viewPager_tv.setText(descs[position]); } //和用户交互时,state就是ViewPager的状态 @Override public void onPageScrollStateChanged(int state) { //如果空闲状态就自动滑动 if(state == ViewPager.SCROLL_STATE_IDLE){ handler.sendEmptyMessageDelayed(0,2000); }else{ handler.removeMessages(0); } } }); //设置左右滑动 viewPager_vp.setCurrentItem(Integer.MAX_VALUE/2+3); handler.sendEmptyMessageDelayed(0,2000); /* viewPager_vp.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return false; } });*/ } private void changeTextAndDot(int position) { viewPager_tv.setText(descs[position]); for(int i = 0; i < imageResIds.length; i++){ View childAt = ll_dot.getChildAt(i); childAt.setBackgroundResource(i == position ?R.drawable.dot_focus:R.drawable.dot_normal); } } private void createDot() { View view = new View(this); view.setBackgroundResource(R.drawable.dot_normal); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(8,8); layoutParams.leftMargin = 8 ; view.setLayoutParams(layoutParams); ll_dot.addView(view); } @Override protected void onDestroy() { super.onDestroy(); handler.removeMessages(0); }

}

转载请注明原文地址: https://www.6miu.com/read-5038354.html

最新回复(0)