Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署
之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接):
1、《android中使用viewflipper实现屏幕切换》
2、《android中使用viewpager实现屏幕页面切换和页面轮播效果》
3、《android中使用imageviewswitcher实现图片切换轮播导航效果》
今天通过使用github中的开源项目android-image-indicator来简单实现app自带图片的轮播以及加载网络图片进行轮播。
一、从github上下载项目
github地址:
其中介绍了简单的使用示例,大家可以看看
二、导入依赖包
(1)我尝试使用androidstudio2,2通过import module来导入下载文件中的library来导入依赖包,但本次下载的项目使用maven来构建,
导入过程出现错误提示:error:(2, 0) plugin with id‘com.github.dcendents.android-maven' not found。尝试了多种解决方案,无法有效解决依赖包导入问题。建议使用第二种方法导入
(2)在build.gradle(module.app)中dependencies下直接添加以下代码
compile 'com.panxw.imageindicator:library:1.0.2'
添加示例如下:
添加完后,点击界面上的提示,同步以下就好。
三、演示加载app自带图片
(1)layout布局文件如下:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.mly.panhouye.demo.mainactivity"> <com.panxw.android.imageindicator.imageindicatorview android:id="@+id/indicate_view" android:layout_width="match_parent" android:layout_height="match_parent"> </com.panxw.android.imageindicator.imageindicatorview> </relativelayout>
(2)java实现代码如下:
package com.mly.panhouye.demo; import android.os.bundle; import android.support.v7.app.appcompatactivity; import com.panxw.android.imageindicator.autoplaymanager; import com.panxw.android.imageindicator.imageindicatorview; import java.util.arraylist; import java.util.list; public class mainactivity extends appcompatactivity { imageindicatorview indicate_view; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); indicate_view = (imageindicatorview) findviewbyid(r.id.indicate_view); local(); } //系统本地图片加载 public void local() { // 声明一个数组, 指定图片的id final integer[] resarray = new integer[] {r.mipmap.a1, r.mipmap.a2, r.mipmap.a3, r.mipmap.a4}; // 把数组交给图片展播组件 indicate_view.setuplayoutbydrawable(resarray); // 展播的风格 // indicate_view.setindicatestyle(imageindicatorview.indicate_arrow_round_style); indicate_view.setindicatestyle(imageindicatorview.indicate_userguide_style); // 显示组件 indicate_view.show(); final autoplaymanager autobrocastmanager = new autoplaymanager(indicate_view); //设置开启自动广播 autobrocastmanager.setbroadcastenable(true); //autobrocastmanager.setbroadcasttimes(5);//loop times //设置开始时间和间隔时间 autobrocastmanager.setbroadcasttimeintevel(3000, 3000); //设置循环播放 autobrocastmanager.loop(); } }
四、加载网络图片
(1)首先在java中自定义networkimageindicatorview.class
其中在加载网络图片到imageview中使用了网络通信框架-volley。这里主要使用其中的imagerequest,
imagerequest的构造函数接收六个参数,分别代表的含义是:
第一个参数就是图片的url地址,这个没什么需要解释的。
第二个参数是图片请求成功的回调,这里我们把返回的bitmap参数设置到imageview中。
第三第四个参数分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩。
第五个参数用于指定图片的颜色属性,bitmap.config下的几个常量都可以在这里使用,其中argb_8888可以展示最好的颜色属性,每个图片像素占据4个字节的大小,而rgb_565则表示每个图片像素占据2个字节大小。
第六个参数是图片请求失败的回调,这里我们当请求失败时在imageview中显示一张默认图片。
package com.mly.panhouye.demo; import android.content.context; import android.graphics.bitmap; import android.util.attributeset; import android.widget.imageview; import com.android.volley.requestqueue; import com.android.volley.response; import com.android.volley.volleyerror; import com.android.volley.toolbox.imagerequest; import com.android.volley.toolbox.volley; import com.panxw.android.imageindicator.imageindicatorview; import java.util.list; /** * created by panchengjia on 2017/1/10 0010. */ public class networkimageindicatorview extends imageindicatorview { public networkimageindicatorview(context context, attributeset attrs) { super(context, attrs); } public networkimageindicatorview(context context) { super(context); } public void setuplayoutbyimageurl(list<string> urllist) { for(string url: urllist) { final imageview imageview = new imageview(getcontext()); //load image from url and set to imageview, you can use uil or volley to do this work //本次我们使用volley //创建一个请求对列 requestqueue queue = volley.newrequestqueue(getcontext()); imagerequest request = new imagerequest(url, new response.listener<bitmap>() { @override public void onresponse(bitmap bitmap) { imageview.setimagebitmap(bitmap); } }, 0, 0, bitmap.config.rgb_565, new response.errorlistener() { @override public void onerrorresponse(volleyerror volleyerror) { system.out.println(volleyerror); } }); queue.add(request); addviewitem(imageview); } } }
(2)layout布局展示文件如下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.mly.panhouye.demo.mainactivity"> <com.mly.panhouye.demo.networkimageindicatorview android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/internet_iv"> </com.mly.panhouye.demo.networkimageindicatorview> </linearlayout>
(3)java实现代码如下:
package com.mly.panhouye.demo; import android.os.bundle; import android.support.v7.app.appcompatactivity; import com.panxw.android.imageindicator.autoplaymanager; import com.panxw.android.imageindicator.imageindicatorview; import java.util.arraylist; import java.util.list; public class mainactivity extends appcompatactivity { networkimageindicatorview internet_iv; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); internet_iv= (networkimageindicatorview) findviewbyid(r.id.internet_iv); internet(); } public void internet(){ final list<string> urllist= new arraylist<string>(); urllist.add("http://r.photo.store.qq.com/psb?/v12kkhqd1cwrd4/1*cdpmdmlbug.gga4pxhtxzuszqz1ei76fidnprasxi!/r/dkeaaaaaaaaa"); urllist.add("http://r.photo.store.qq.com/psb?/v12kkhqd1cwrd4/40y896pfej0zdqyzrd0nar48ycs5g9lkh3ji7zsrcqq!/r/dkeaaaaaaaaa"); urllist.add("http://r.photo.store.qq.com/psb?/v12kkhqd1cwrd4/7oqqqkh5d5okezdyc0geegatqjjirh8.gbq9my13aiy!/r/dkaaaaaaaaaa"); internet_iv.setuplayoutbyimageurl(urllist); internet_iv.show(); //设置自动播放 autoplaymanager autobrocastmanager = new autoplaymanager(internet_iv); autobrocastmanager.setbroadcastenable(true); autobrocastmanager.setbroadcasttimes(5);//循环次数设置 autobrocastmanager.setbroadcasttimeintevel(500, 500); autobrocastmanager.loop(); } }
使用开源框架实现起来还是很方便的,本次演示只为实现功能,大家有时间可以优化下界面,实现自己想要的结果(网络加载中引用了本人的玉照哦,谢谢大家观赏)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: java 读取文件方法的总结
推荐阅读
-
Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署
-
Android使用开源框架Fresco处理图片
-
Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署
-
一款好用的android图片缩放查看开源框架photoview的使用。
-
Android中使用开源框架eventbus3.0实现fragment之间的通信交互
-
Android开发使用Handler实现图片轮播功能示例
-
Android中使用开源框架eventbus3.0实现fragment之间的通信交互
-
Android开发使用Handler实现图片轮播功能示例
-
Android中使用开源框架Citypickerview实现省市区三级联动选择
-
RollViewPager图片轮播效果开源框架使用方法详解