android实现轮播图

实现轮播图

添加依赖

compile 'com.youth.banner:banner:1.4.10'

compile 'com.github.bumptech.glide:glide:3.7.0'
 

代码:

package com.bdsx.tiantianzhuanqian.ui.fragment;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bdsx.tiantianzhuanqian.R;
import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.loader.ImageLoader;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by SuHongJin on 2018/8/23.
 */

public class Fragment_Home extends Fragment {
    private Banner banner;
    private List<String> bannerlist;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_home,container,false);
        initView(view);
        return view;
    }

    private void initView(View view) {
        //轮播图
        banner = (Banner) view.findViewById(R.id.main_banner);
        bannerlist = new ArrayList<>();

        bannerlist.add("https://w1.hoopchina.com.cn/52/b0/2b/52b02b490c6f833494d28cb516cdba27001.jpg");
        bannerlist.add("http://img.hb.aicdn.com/3dd2a236db1e974e31dc28f5e65e32c1107511d110e85-ngdyy6_fw658");
        bannerlist.add("http://img.zcool.cn/community/01215a5850ab47a801219c77563ad1.png@900w_1l_2o_100sh.jpg");

        banner.setImageLoader(new ImageLoader() {
            @Override
            public void displayImage(Context context, Object path, ImageView imageView) {
                Glide.with(context).load(path).asBitmap().into(imageView);
            }
        });
        banner.setImages(bannerlist);
        banner.setBannerAnimation(Transformer.BackgroundToForeground);
        banner.setDelayTime(5000);
        banner.setIndicatorGravity(BannerConfig.CENTER);
        banner.start();
    }
}

哦,别忘记给他加网络权限

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Android 实现轮播图的整体代码示例: 1. 在布局文件中添加 ViewPager 和指示器的布局: ``` <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="200dp" /> <LinearLayout android:id="@+id/indicatorLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:padding="10dp" /> </RelativeLayout> ``` 2. 创建 Adapter 类,继承自 PagerAdapter,并实现其中的方法: ``` public class ImagePagerAdapter extends PagerAdapter { private List<Integer> mImageIds; private Context mContext; public ImagePagerAdapter(Context context, List<Integer> imageIds) { mContext = context; mImageIds = imageIds; } @Override public int getCount() { return mImageIds.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { ImageView imageView = new ImageView(mContext); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setImageResource(mImageIds.get(position)); container.addView(imageView); return imageView; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((ImageView) object); } } ``` 3. 在 Activity 或 Fragment 中设置 ViewPager 和指示器: ``` List<Integer> imageIds = new ArrayList<>(); imageIds.add(R.drawable.image1); imageIds.add(R.drawable.image2); imageIds.add(R.drawable.image3); ViewPager viewPager = findViewById(R.id.viewPager); ImagePagerAdapter adapter = new ImagePagerAdapter(this, imageIds); viewPager.setAdapter(adapter); LinearLayout indicatorLayout = findViewById(R.id.indicatorLayout); for (int i = 0; i < imageIds.size(); i++) { ImageView indicator = new ImageView(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(10, 0, 10, 0); indicator.setLayoutParams(lp); indicator.setImageResource(R.drawable.indicator_selector); indicatorLayout.addView(indicator); } viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < indicatorLayout.getChildCount(); i++) { ImageView indicator = (ImageView) indicatorLayout.getChildAt(i); if (i == position) { indicator.setSelected(true); } else { indicator.setSelected(false); } } } @Override public void onPageScrollStateChanged(int state) { } }); viewPager.setCurrentItem(0); ((ImageView) indicatorLayout.getChildAt(0)).setSelected(true); ``` 4. 在 res/drawable 文件夹中添加指示器的 Selector 文件,例如 indicator_selector.xml: ``` <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/indicator_selected" android:state_selected="true" /> <item android:drawable="@drawable/indicator_unselected" /> </selector> ``` 其中,indicator_selected 和 indicator_unselected 分别是选中和未选中状态下的指示器图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值