zoukankan      html  css  js  c++  java
  • ViewPager总结

    https://github.com/youth5201314/banner

    compile 'com.youth.banner:banner:1.4.9'
    private void setBanner() {
            if (banner == null)
                return;
            //设置banner样式
            banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
            //设置图片加载器
            banner.setImageLoader(new GlideImageLoader());
            //设置图片集合
            banner.setImages(images);
            //设置banner动画效果
            banner.setBannerAnimation(Transformer.DepthPage);
            //设置标题集合(当banner样式有显示title时)
    //        banner.setBannerTitles(titles);
            //设置自动轮播,默认为true
            banner.isAutoPlay(true);
            //设置轮播时间
            banner.setDelayTime(5000);
            //设置指示器位置(当banner模式中有指示器时)
            banner.setIndicatorGravity(BannerConfig.CENTER);
            //banner设置方法全部调用完毕时最后调用
            banner.start();
        }

    1.添加布局fragment_hall_head.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/transparent"
    android:orientation="vertical">
    <FrameLayout
            android:id="@+id/fl"
    android:layout_width="match_parent"
    android:layout_height="300px">

    <android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="300px" />

    <LinearLayout
    android:id="@+id/ll_points"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_marginBottom="11dp"
    android:orientation="horizontal" />

    </FrameLayout>
    </LinearLayout>

    2.添加资源文件
    shape_xiao_yuan_quan_selected.xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
    android:width="8dp"
    android:height="8dp" />
    <stroke
    android:width="1px"
    android:color="@color/colorAccent" />
    <solid android:color="@color/colorAccent" />
    </shape>
    shape_xiao_yuan_quan_nomal.xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
    android:width="8dp"
    android:height="8dp" />
    <stroke
    android:width="1px"
    android:color="@color/white" />
    <solid android:color="@color/white" />
    </shape>

    3.查找控件

    List<String> imgesUrl = new ArrayList<>();
    imgesUrl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg");
    imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg");
    imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg");
    imgesUrl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg");
    Banner banner = new Banner(MainActivity.this, imgesUrl, findViewById(R.id.fl));
    4.添加动画类:

    import android.content.Context;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;

    import java.util.List;

    /**
    * Created by Administrator on 2017/2/28.
    */

    public class Banner {
    private LinearLayout llPoints; //图片里面的小圆点
    private ViewPager viewPager; //图片轮播
    List<String> imgesUrl;
    Context context;
    View view;

    public Banner(Context context, List<String> imgesUrl, View view) {
    this.context = context;
    this.imgesUrl = imgesUrl;
    this.view = view;
    viewPager = (ViewPager) view.findViewById(R.id.viewPager);
    llPoints = (LinearLayout) view.findViewById(R.id.ll_points);
    startBanner();
    }

    /**
    * 处理轮播图
    */

    public void startBanner() {
    MyPagerAdapter myPagerAdapter = new MyPagerAdapter();
    viewPager.setAdapter(myPagerAdapter);
    viewPager.setCurrentItem(imgesUrl.size() * 10000);
    startRool();
    //初始化ViewPager轮播小圆圈
    llPoints.removeAllViews();
    for (int i = 0; i < imgesUrl.size(); i++) {
    ImageView point = new ImageView(context);
    if (i == 0) {
    point.setImageResource(R.drawable.shape_xiao_yuan_quan_selected);
    } else {
    point.setImageResource(R.drawable.shape_xiao_yuan_quan_nomal);
    }
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    if (i > 0) {
    params.leftMargin = dp2px(context, 8);
    }
    llPoints.addView(point, params);
    }
    //ViewPager的轮播效果(小圆圈改变)
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
    position = position % imgesUrl.size();
    for (int i = 0; i < llPoints.getChildCount(); i++) {
    ImageView image = (ImageView) llPoints.getChildAt(i);
    if (i == position) {
    image.setImageResource(R.drawable.shape_xiao_yuan_quan_selected);
    } else {
    image.setImageResource(R.drawable.shape_xiao_yuan_quan_nomal);
    }
    }
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
    });

    }
       /**
    * 轮播图的adapter
    */

    class MyPagerAdapter extends PagerAdapter {
    @Override
    public int getCount() {
    return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
    return view == object;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
    ImageView imageView = new ImageView(context);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    // ImageLoader.getInstance().displayImage(imgesUrl.get(position % imgesUrl.size()), imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
    });
    imageView.setOnTouchListener(new View.OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    handler.removeCallbacksAndMessages(null);
    break;
    case MotionEvent.ACTION_UP:
    handler.sendEmptyMessageDelayed(1, 2000);
    break;
    /**
    * 当保持按下操作,并从此控件移到外层控件时,就会触发ACTION_CANCEL事件时,
    * 当前的手势被中断,不会在接收它的记录
    * 将它当做ACTION_UP事件进行处理比较好
    */
    case MotionEvent.ACTION_CANCEL:
    handler.sendEmptyMessageDelayed(1, 2000);
    break;

    default:
    break;
    }
    // true处理这个事件
    return true;
    }
    });

    container.addView(imageView);
    return imageView;
    }
    }

    Handler handler = new Handler() {
     
      @Override
    public void handleMessage(Message msg) {
    if (msg.what == 1) {
    int currentItem = viewPager.getCurrentItem();
    currentItem++;
    viewPager.setCurrentItem(currentItem);
    startRool();
    }
    }

    };

    private void startRool() {
    handler.sendEmptyMessageDelayed(1, 3000);
    }

    public static int dp2px(Context context, int dp) {
    // 获取像素密码
    float density = context.getResources().getDisplayMetrics().density;
    return (int) (dp * density + 0.5f);
    }
    }



  • 相关阅读:
    nginx相关
    facebook开源项目集合
    鸡汤有毒--大家多读
    曹政--互联网搜索老师傅
    将jar文件加到Maven的local repository中
    java web classpath
    java 读取excel内容转为JSONArray
    (.DS_Store)避免多人提交代码到GitHub上起冲突
    mvn dependency:tree
    Java Web乱码分析及解决方案
  • 原文地址:https://www.cnblogs.com/huihuizhang/p/6481808.html
Copyright © 2011-2022 走看看