Banner轮播图(网络接口实现)

依赖

implementation 'com.youth.banner:banner:1.4.10'
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'me.imid.swipebacklayout.lib:library:1.1.0'

xml布局

<com.youth.banner.Banner
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_below="@id/textView"
    android:layout_marginTop="5dp"
    ></com.youth.banner.Banner>
定义GlideImageLoader
public class GlideImageLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context).load(((BannerBean.DataBean)path).getIcon()).into(imageView);
    }
}

主页面

public class MainActivity extends AppCompatActivity{
    private Banner banner;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getBannerData();
    }

    private void getBannerData() {
        banner=findViewById(R.id.banner);
        OK.getOk().doGet("https://www.zhaoapi.cn/quarter/getAd", new OkCallback() {
            @Override
            public void onUI(String json) {
                Gson gson=new Gson();

                final BannerBean bannerBean = gson.fromJson(json, BannerBean.class);

                List<BannerBean.DataBean> data = bannerBean.getData();

                banner.setImageLoader(new GlideImageLoader());
                banner.setImages(data);
                banner.start();

                banner.setOnBannerListener(new com.youth.banner.listener.OnBannerListener() {
                    @Override
                        public void OnBannerClick(int position) {
                        Intent intent = new Intent(MainActivity.this,WebViewActivity.class);
                        intent.putExtra("url", bannerBean.getData().get(position).getUrl());
                        startActivity(intent);


        }
    });


            }

            @Override
            public void onFailed(String json) {

            }
        });
   }

}

webview页面

public class WebViewActivity extends AppCompatActivity{
    private WebView webView;
    private String url;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        //获取资源id
        webView = (WebView) findViewById(R.id.webview);
        //获得值
        Intent intent = getIntent();
        //传值
        url = intent.getStringExtra("url");
        // Toast.makeText(WebActivity.this, url1,Toast.LENGTH_LONG).show();
        //赋值
        webView.loadUrl(url);

    }
}

xml布局

<WebView
    android:id="@+id/webview"
    android:layout_weight="10"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现轮播图接口的方式有很多种,以下是其中一种实现方式: 1. 定义一个轮播图实体类,包含轮播图的id、图片url、跳转链接等属性。 ``` public class Banner { private int id; private String imageUrl; private String linkUrl; // getter和setter方法 } ``` 2. 定义一个轮播图服务接口,包含获取轮播图列表的方法。 ``` public interface BannerService { List<Banner> getBannerList(); } ``` 3. 实现轮播图服务接口,可以从数据库或者其他数据源中获取轮播图列表。 ``` public class BannerServiceImpl implements BannerService { @Override public List<Banner> getBannerList() { // 从数据库或者其他数据源中获取轮播图列表 List<Banner> bannerList = new ArrayList<>(); bannerList.add(new Banner(1, "http://xxx.com/1.jpg", "http://xxx.com/1.html")); bannerList.add(new Banner(2, "http://xxx.com/2.jpg", "http://xxx.com/2.html")); bannerList.add(new Banner(3, "http://xxx.com/3.jpg", "http://xxx.com/3.html")); return bannerList; } } ``` 4. 在控制器中注入轮播图服务,调用服务方法获取轮播图列表,并将列表传递给前端页面。 ``` @Controller public class BannerController { @Autowired private BannerService bannerService; @RequestMapping("/banner") public String getBannerList(Model model) { List<Banner> bannerList = bannerService.getBannerList(); model.addAttribute("bannerList", bannerList); return "banner"; } } ``` 5. 在前端页面中使用轮播图插件,例如Bootstrap的Carousel插件,将轮播图列表展示出来。 ``` <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel"> <ol class="carousel-indicators"> <c:forEach items="${bannerList}" var="banner" varStatus="status"> <li data-target="#carouselExampleIndicators" data-slide-to="${status.index}" class="<c:if test="${status.index == 0}">active</c:if>"></li> </c:forEach> </ol> <div class="carousel-inner"> <c:forEach items="${bannerList}" var="banner" varStatus="status"> <div class="carousel-item <c:if test="${status.index == 0}">active</c:if>"> <a href="${banner.linkUrl}"><img src="${banner.imageUrl}" class="d-block w-100" alt="..."></a> </div> </c:forEach> </div> <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值