Как я могу внедрить вращающийся баннер для моего приложения для Android? - PullRequest
0 голосов
/ 22 декабря 2018

При входе в систему я хотел бы иметь баннер (на самом деле 3), который переключался бы к определенному времени.Так же, как новости на сайте.Со стрелкой для перехода к следующему, но в основном это проходит автоматически.

Пример того, что я хочу, эти изображения на экране входа в систему Tinder переключаются, когда я провожу или просто жду: Screenshot of Tinder app with carousel image

Как мне сделать что-то подобное на Android?Есть ли способ сделать это изначально?или хотя бы есть для этого внешний ресурс?

1 Ответ

0 голосов
/ 22 декабря 2018

Попробуйте этот код,

public class TestActivity  extends AppCompatActivity {

    int images[] = {R.drawable.ic_earth, R.drawable.oval_btn,
             R.drawable.ic_group_black_24dp, R.drawable.ic_earth};
    ImagePagerAdapter myAdapter;

            @Override
            protected void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.tests);

                ViewPager viewPager = findViewById(R.id.viewPager);

                myAdapter = new ImagePagerAdapter(TestActivity.this, images);
                viewPager.setAdapter(myCustomPagerAdapter);
                setupViewPager(viewPager);

            }

            int currentPage = 0;
            Timer timer;
            final long DELAY_MS = 500;
            final long PERIOD_MS = 3000;
            int NUM_PAGES = 4;

            private void setupViewPager(final ViewPager viewPager) {


                final Handler handler = new Handler();
                final Runnable Update = new Runnable() {
                    public void run() {
                        if (currentPage == NUM_PAGES) {
                            currentPage = 0;
                        }
                        viewPager.setCurrentItem(currentPage++, true);
                    }
                };

                timer = new Timer(); // This will create a new Thread
                timer .schedule(new TimerTask() { // task to be scheduled

                    @Override
                    public void run() {
                        handler.post(Update);
                    }
                }, DELAY_MS, PERIOD_MS);

            }
            public class ImagePagerAdapter extends PagerAdapter {

                Context context;
                int images[];
                LayoutInflater layoutInflater;


                public ImagePagerAdapter(Context context, int images[]) {
                    this.context = context;
                    this.images = images;
                    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                }

                @Override
                public int getCount() {
                    return images.length;
                }

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

                @Override
                public Object instantiateItem(ViewGroup container, final int position) {
                    View itemView = layoutInflater.inflate(R.layout.item, container, false);

                    ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
                    imageView.setImageResource(images[position]);

                    container.addView(itemView);

                    //listening to image click
                    imageView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                        }
                    });

                    return itemView;
                }

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