安卓 Banner轮播图

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
public class MainActivity extends AppCompatActivity {

    ArrayList<Integer> images = new ArrayList<>();
    ArrayList<String>  titles = new ArrayList<>();
    Banner banner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        banner = findViewById(R.id.ban);

        images.add(R.drawable._102);
        images.add(R.drawable._103);
        images.add(R.drawable.xiaolian);

        titles.add("图片一");
        titles.add("图片二");
        titles.add("图片三");

        banner.setImages(images);//设置图片
        banner.setImageLoader(new ImageLoadBanner());
        banner.setBannerTitles(titles);//设置标题
        banner.setDelayTime(1000);//设置间隔时间
        banner.isAutoPlay(true);
        banner.setIndicatorGravity(BannerConfig.CENTER);//设置位置
        banner.setBannerAnimation(Transformer.Stack); //设置动画效果
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        banner.start();
    }

    public  class ImageLoadBanner extends ImageLoader{

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

        }
    }

}

滑动效果

一、布局文件

// 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));
    }
}

回退栈(管理Fragment)

布局文件

// 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/fl"
        android:layout_weight="9"
        android:layout_width="match_parent"
        android:layout_height="0dp"></FrameLayout>


    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp" >

        <Button
            android:id="@+id/button1"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="按钮一"
            />
        <Button
            android:id="@+id/button2"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="按钮二"
            />

</LinearLayout>

    <Button
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:text="模拟返回键"
        android:onClick="finishF"
        />
</LinearLayout>

Java代码

// An highlighted block
public class MainActivity extends AppCompatActivity {
    FragmentManager manager;
    Button button1;
    Button button2;
    MyFragment myFragment;
    Fragment2 fragment2;
    Fragment3 fragment3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        manager = getSupportFragmentManager();
        button1 = findViewById(R.id.button1);
        button2 = findViewById(R.id.button2);



        manager = getSupportFragmentManager();

        FragmentTransaction transaction = manager.beginTransaction();
        myFragment = new MyFragment();
        transaction.add(R.id.fl,myFragment);

        transaction.addToBackStack("fl1");

        transaction.commit();

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction1 = manager.beginTransaction();

                transaction1.hide(myFragment);
                fragment2 = new Fragment2();
                transaction1.add(R.id.fl,fragment2);
                transaction1.addToBackStack("fl2");
                transaction1.commit();
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction2 = manager.beginTransaction();

                transaction2.hide(myFragment);
                transaction2.hide(fragment2);

                fragment3 = new Fragment3();
                transaction2.add(R.id.fl,fragment3);
                transaction2.addToBackStack("fl3");
                transaction2.commit();
            }
        });


    }

    public void finishF(View view){
        manager.popBackStackImmediate("fl1",0);
    }

//    @Override
//    public boolean onKeyDown(int keyCode, KeyEvent event) {
//        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() ==0){
//            manager.popBackStackImmediate("fl1",0);
//            return true;
//        }
//        return super.onKeyDown(keyCode, event);
//    }


    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK){
            manager.popBackStackImmediate("fl1",0);
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值