Fragment加 Banner 加载不出图片

最近想在Fragment  里面添加轮播广告,加了之后图片就是显示不出来。后来测试才发现问题所在。不多说看步骤吧。

1、添加依赖 build.gradle  里面添加

dependencies{
compile 'com.youth.banner:banner:1.4.9'
}

2、AndroidManifest.xml里面添加权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3、Fragment.xml文件添加

<com.youth.banner.Banner
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="150dp"//这个高度自己设置
    />

4、Fragment.java里面写上

package com.example.administrator.fragment;

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

import com.bumptech.glide.Glide;
import com.example.administrator.xinxinai.FristActivity;
import com.example.administrator.xinxinai.R;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;


/**
 * Created by Administrator on 2018/8/1.
 */

public class ZhuyeFragment extends Fragment {


   private Banner myBanner;
    View myZhuYeView;
    List<Integer> ImageUrlData;//注意坑在这里 我之前写的是 List<String> ImageUrlData因为
                                //Glide.with(getActivity()).load(url).into(imageView);load里面需要整形
    List<String>ContentData;
   

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        myZhuYeView=LayoutInflater.from(getActivity()).inflate(R.layout.zhuye_fragment,container,false);
       
       initBanner();
        return myZhuYeView;

    }
    private void initBanner()
    {
        myBanner=(Banner)myZhuYeView.findViewById(R.id.banner);
        
        ImageUrlData=new ArrayList<>();
        ContentData=new ArrayList<>();
        ImageUrlData.add(R.drawable.ad1);
        ImageUrlData.add(R.drawable.ad2);
        ImageUrlData.add(R.drawable.ad3);
        ImageUrlData.add(R.drawable.ad4);
        ContentData.add("我就是测试的什么也没有用,你就将就看吧1");
        ContentData.add("我就是测试的什么也没有用,2");
        ContentData.add("我我没有作用,你就将就看吧3");
        ContentData.add("实在没有什么测试了就写这个吧4");

        myBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        myBanner.setImageLoader(new MyLoader());
        myBanner.setImages(ImageUrlData);
        myBanner.setBannerTitles(ContentData);
       myBanner.setBannerAnimation(Transformer.Default);
        myBanner.setDelayTime(3000);
        myBanner.isAutoPlay(true);
        myBanner.setIndicatorGravity(BannerConfig.CENTER);
        myBanner.start();

    }


    //自定义的图片加载器
    private class MyLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
//Glide设置图片的简单用法
            Glide.with(getActivity()).load(path).into(imageView);
          
        }

    }

}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ANR(Application Not Responding)错误通常是由于主线程被长时间阻塞而引起的。在Android中,主线程负责处理用户界面交互和渲染,如果主线程被阻塞,应用程序将无法响应用户的操作,从而导致ANR错误。 在使用Glide图片时,如果没有正确地配置和使用Glide库,可能会导致主线程被阻塞,从而引起ANR错误。以下是一些可能导致ANR错误的常见问题: 1. 在主线程中调用Glide.load()方法。这将导致Glide在主线程中图片并阻塞主线程。 2. 在Fragment中使用ViewPager,并在ViewPager中大量图片。这将导致ViewPager在滑动过程中卡顿,并可能引起ANR错误。 要避免这些问题,你可以尝试以下几种解决方案: 1. 使用Glide的with()方法指定一个非主线程的上下文。 2. 使用Glide的asynchronous()方法将图片操作放在单独的线程中执行。 3. 在Fragment中使用ViewPager时,使用FragmentStatePagerAdapter而不是FragmentPagerAdapter。FragmentStatePagerAdapter只保留当前Fragment和相邻的Fragment的状态,而FragmentPagerAdapter会保留所有的Fragment状态。这将减少在ViewPager中大量图片时的资源消耗。 4. 使用RecyclerView代替ViewPager,因为RecyclerView可以更好地处理大量数据的情况。同时,使用RecyclerView时,应该使用RecyclerView.Adapter中的异步图片技术。 希望这些解决方案能帮助你解决ANR问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值