闲着没事 一个简单的轮播图实现

    xiaoxiao2021-03-25  154

    public class AutoViewPager extends LinearLayout { private ViewPager vp; private LinearLayout container; private LinearLayout.LayoutParams dotParams; private Timer timer; public AutoViewPager(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init(){ inflate(getContext(), R.layout.auto_viewpager_layout,this); vp= (ViewPager)findViewById(R.id.vp); container= (LinearLayout) findViewById(R.id.dot_container); dotParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); dotParams.leftMargin= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,10,getResources().getDisplayMetrics()); timer=new Timer(); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for (int i=0;i<dots.size();i++){ if (position==i){ dots.get(i).setImageResource(R.drawable.red_dot); }else { dots.get(i).setImageResource(R.drawable.black_dot); } } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } private List<ImageView>dots=new ArrayList<>(); public void setImages(List<ImageView> images){ vp.setAdapter(new VpAdapter(images)); for (int i=0;i<images.size();i++){ ImageView dot= new ImageView(getContext()); dot.setImageResource(R.drawable.black_dot); container.addView(dot); dots.add(dot); if (i!=0){ dot.setLayoutParams(dotParams); } } timer.schedule(new MTimer(),1000,2000); } private class MTimer extends TimerTask{ @Override public void run() { Message msg=Message.obtain(); msg.what=1; mHandler.sendMessage(msg); } } int vpIndex=0; private Handler mHandler =new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==1){ if (vpIndex==7){ vpIndex=0; } vp.setCurrentItem(vpIndex++); } } }; private class VpAdapter extends PagerAdapter{ List<ImageView> imageViews; public VpAdapter(List<ImageView> imageViews){ this.imageViews=imageViews; } @Override public int getCount() { return imageViews.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(imageViews.get(position)); return imageViews.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(imageViews.get(position)); } } } <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <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_gravity="bottom" android:gravity="center" android:orientation="horizontal" android:id="@+id/dot_container" android:layout_width="match_parent" android:layout_height="20dp"> </LinearLayout> </FrameLayout>

    很简单的东西 就是一个布局封装的定时任务

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

    最新回复(0)