android 简单实现Banner 轮廓图效果自动播放

来源:互联网 发布:高级java工程师招聘 编辑:程序博客网 时间:2024/06/05 05:32
于广告轮播Banner这个东西,GitHub上面应该有现成的开源组件,不过我没去找过,觉得实现起来不会太难,就自己去仿写了,下面我说下实现的思路:
1、首先看到这个可以滑动切换图片的界面,我们很自然就会想到ViewPager控件。2、需要去考虑它的伪循环(其实只是滑到末尾图片再切换到开始图片,给人一种"无限循环"的错觉),做过GalleyView画廊效果的朋友应该很熟悉,当我们滑到画廊到底端,如果想看第一张图片需要再重新滑回去,那么这样给用户的体验就不好,所以我们会在适配器Adapter的getCount()方法里,返回一个很大的数值,让它能够"无限循环"。不清楚的朋友也没关系,下面代码会详细提到。3、就是考虑它的自动滑动效果,那么很简单的就会去想到定时器,每隔几秒让它自动滑动一次,再通过配合ViewPager的设置当前页面setCurrentItem就可以达到我们想要的效果。4、最后就是需要考虑到细节方面的东西了,如何让画面滑动配合底部的小圆圈点,我们在做定时器操作的时候,无限循环肯定是一个while永true的状态,当我们切换退出当前界面的时候,这个定时器循环要怎么处理。

一,首先要导入相关依赖compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.squareup.okio:okio:1.5.0'compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.google.code.gson:gson:2.8.2'compile 'com.youth.banner:banner:1.4.9'//compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'


第二步 。对应的相关的权限<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.VIBRATE" />

 <com.youth.banner.Banner        android:id="@+id/mybanner"        android:layout_width="match_parent"        android:layout_height="150dp"></com.youth.banner.Banner>


第三步 :创建相关的实现的类创建GlideImageLoader 图片加载类public class GlideImageLoader extends ImageLoader {    public void displayImage(Context context, Object path, ImageView imageView) {        Glide.with(context).load(path).into(imageView);    }}第四java代码 对应的Activity 主页面 或者Fragment界面public class MainActivity extends AppCompatActivity implements IView{ Banner banner;    ArrayList mlist;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        banner = (Banner)findViewById(R.id.banner); Banner banner;    ArrayList mlist;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        banner = (Banner)findViewById(R.id.banner);      userpresenter = new UserPresenter(this);        userpresenter.getUser(Api.HOME_URL);    }//该方法是MVP实现View层的接口 重写的方法     @Override    public void getNews(ArrayList<News.DataBean> list) {        recycler.setAdapter(homeadper =new HomeAdaper(Main2Activity.this,list));        mlist = new ArrayList();        for (int i = 0; i < list.size(); i++) {            mlist.add(list.get(i).getImage_url());        }        banner.setImageLoader(new GlideImageLoader());        banner.setImages(mlist);        banner.start();}
compile 'com.jakewharton:butterknife:7.0.1'
黄油刀
 compile 'com.youth.banner:banner:1.4.9'    compile 'com.github.bumptech.glide:glide:3.7.0'




原创粉丝点击