Banner轮播图、viewPager动画效果

Banner轮播图

一、依赖

// An highlighted block
 implementation 'com.youth.banner:banner:1.4.10'  //轮播图

二,布局文件

// An highlighted block
<LinearLayout 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=".MainActivity">
    
   <com.youth.banner.Banner
       android:id="@+id/ban"
       android:layout_width="match_parent"
       android:layout_height="match_parent"></com.youth.banner.Banner>
</LinearLayout>

三、Java代码

// An highlighted block
 Banner banner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        banner=findViewById(R.id.hook);

        ArrayList<Integer> images = new ArrayList<>();
        images.add(R.mipmap.shouji1);
        images.add(R.mipmap.shouji2);
        images.add(R.mipmap.shouji3);

        ArrayList<String> arrayList=new ArrayList<>();
        arrayList.add("王子龙");
        arrayList.add("小王子");
        arrayList.add("青蛙王子");

        banner.setImages(images);
        banner.setImageLoader(new ImageLoadBanner());
        banner.setBannerTitles(arrayList);
        banner.setDelayTime(1000);
        banner.isAutoPlay(true);
        banner.setIndicatorGravity(BannerConfig.CENTER);//位置
        banner.setBannerAnimation(Transformer.Stack);
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        banner.start();



    }

    class ImageLoadBanner extends ImageLoader{

        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            imageView.setImageResource(Integer.parseInt(path.toString()));
        }
    }

效果图:

Banner轮播图、viewPager动画效果_第1张图片

滑动效果

一、布局文件

// An highlighted block
<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=".MainActivity"
    android:clipChildren="false"
    >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="100dp"
        android:clipChildren="false"
        android:overScrollMode="never"
        ></android.support.v4.view.ViewPager>

</RelativeLayout>

二、java代码

// An highlighted block
public class MainActivity extends AppCompatActivity {
    ViewPager viewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = findViewById(R.id.pager);

        int[] images = {R.drawable._102,R.drawable._103,R.drawable._102};
        ArrayList<ImageView> imageViews = new ArrayList<>();
        for (int i = 0;i<images.length;i++){
            ImageView imageView = new ImageView(this);
            imageView.setImageResource(images[i]);
            imageViews.add(imageView);
        }

        viewPager.setAdapter(new MyAdapter(imageViews));
        viewPager.setPageMargin(60);
        viewPager.setOffscreenPageLimit(3);
        viewPager.setPageTransformer(false,new MyPager());
    }

    public class MyPager implements ViewPager.PageTransformer{

        @Override
        public void transformPage(@NonNull View view, float v) {

             float flag = 0.0f;
             if (v <= flag){
               view.setAlpha(1+v);
             }else if (v>=flag && v<=1){
                 view.setAlpha(1-v);
             }

//            if (v < -1){
//                v = -1;
//            }else if (v > 1){
//                v = 1;
//            }
//
//            float choose = v < 0 ? 1+v : 1-v;
//
//            if (choose == 0){
//                view.setScaleX(0.9f);
//                view.setScaleY(0.9f);
//            }else{
//                view.setScaleX(1.0f);
//                view.setScaleY(1.0f);
//            }
        }
    }

}

三、适配器

public class MyAdapter extends PagerAdapter {

    public ArrayList<ImageView> imageViews;

    public MyAdapter(ArrayList<ImageView> imageViews) {
        this.imageViews = imageViews;
    }

    @Override
    public int getCount() {
        return imageViews.size();
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(imageViews.get(position));
        return imageViews.get(position);
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        imageViews.remove(imageViews.get(position));
    }
}

效果图:
Banner轮播图、viewPager动画效果_第2张图片

你可能感兴趣的:(Android)