1.获取网络地址的轮播图片。
上面这是一个好用的类,实现轮播图,不过这是加载网络上的图片,不能加载本地的,下面我会提供一个本地加载的。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/imagePager" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/dotsImg" android:gravity="center_horizontal" android:layout_gravity="bottom|center_horizontal"> </LinearLayout> </FrameLayout>
这是布局文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/balack_thin" android:paddingBottom="10dp"> <com.imobi.callblocker.util.BannerImg android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/mainBanner"></com.test.controls.BannerImg> </LinearLayout>
上面是具体的应用。
@Override public void onCreated(@Nullable Bundle savedInstanceState) { BannerImg bannerImg=(BannerImg)findViewById(R.id.mainBanner); List<String> imgs=new ArrayList<String>(); imgs.add(0,"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1529508272189&di=0ddf122b1e41f10164d41553cafba0e9&imgtype=0&src=http%3A%2F%2Fimg.duoziwang.com%2F2016%2F12%2F18%2F015634128329.jpg"); imgs.add(1,"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1529508291437&di=8232c28ca25526c2b57d8ac797cd62b9&imgtype=jpg&src=http%3A%2F%2Fimg2.imgtn.bdimg.com%2Fit%2Fu%3D2002181187%2C439438033%26fm%3D214%26gp%3D0.jpg"); bannerImg.setImageUris(imgs);
上面是在你的具体用大的地方去输入你的资源文件。这个只能用于网络加载图片,具体是使用ImageLoder去解析网络地址。
具体如下:
DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageForEmptyUri(R.mipmap.pic_one) .showImageOnFail(R.mipmap.pic_two) .showImageOnLoading(R.mipmap.pic_three) .resetViewBeforeLoading(true) .cacheOnDisk(true) .imageScaleType(ImageScaleType.EXACTLY) .bitmapConfig(Bitmap.Config.RGB_565) .considerExifParams(true) .displayer(new FadeInBitmapDisplayer(300)).build();
我相信你跟家具名字就能知道其中的意思。当url为空的时候,当loadfail的是时候等等。
2.接下来第二只用方法了:相当于自己写一个viewpage,用handle耗时去自动的滑动图片。
既可以加载本地图片的。
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="12dp" android:foregroundGravity="center" android:gravity="center" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp" /> <LinearLayout android:id="@+id/viewGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal|bottom" android:orientation="horizontal"> </LinearLayout> </RelativeLayot>
上面是具体的布局文件,接下来是具体的代码了,在相应的java文中。
还会用到:
private void setImageBackground(int index) { for(int i=0; i<dots.length; i++){ if(i == index){ dots[i].setBackgroundResource(R.mipmap.dot_focus); }else{ dots[i].setBackgroundResource(R.mipmap.dot); } } }
在oncreate中调用initView();就行了。
这里是viewpage的adapter。
文章来源: 自定义控件轮播图,很好用的demo直接用就行,