Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署

之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接):

1、《Android中使用ViewFlipper实现屏幕切换》

2、《Android中使用ViewPager实现屏幕页面切换和页面轮播效果》

3、《Android中使用ImageViewSwitcher实现图片切换轮播导航效果》

今天通过使用GitHub中的开源项目android-image-indicator来简单实现APP自带图片的轮播以及加载网络图片进行轮播。

一、从GitHub上下载项目

GitHub地址:https://github.com/panxw/android-image-indicator

其中介绍了简单的使用示例,大家可以看看

二、导入依赖包

(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(); } }

使用开源框架实现起来还是很方便的,本次演示只为实现功能,大家有时间可以优化下界面,实现自己想要的结果(网络加载中引用了本人的玉照哦,谢谢大家观赏)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-24 04:12:10

Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署的相关文章

asynchttpclient-关于Android的开源框架AsyncHttpClient的问题

问题描述 关于Android的开源框架AsyncHttpClient的问题 代码如下: client.post(url, params, new AsyncHttpResponseHandler(){ @Override public void onSuccess(String content) { // TODO Auto-generated method stub super.onSuccess(content); //System.out.println(content); Log.e(c

android图片轮播

第一步,先写布局文件 [html] view plaincopyprint? <com.main.util.SlideShowView                    android:id="@+id/slideshowView"                   android:layout_width="fill_parent"                   android:layout_height="300dp"  

Android零基础入门第49节:AdapterViewFlipper图片轮播

原文:Android零基础入门第49节:AdapterViewFlipper图片轮播    上一期学习了ExpandableListView的使用,你已经掌握了吗?本期开始学习AdapterViewFilpper的使用.       一.认识AdapterViewFilpper       AdapterViewFilpper 继承 了AdapterViewAnimator,它也会显示 Adapter 提供的多个 View 组件,但它每次只能显示一个View组件,程序可通过showPreviou

android中的webview不能正常显示获取到的网页的图片轮播效果

问题描述 android中的webview不能正常显示获取到的网页的图片轮播效果 写了一个Android客户端软件,里边有个webview控件,获取到服务端的网页时出问题了. 网页上有个类似于HeadView的图片轮播效果,但是在客户端webview中不能正常显示. 解决方案 那你能将代码贴出来吗,这样猜不好猜的http://www.codesky.net/showhtml/26836.htm 上面的链接是一个关于webview显示获取到的网页图片轮播效果的源代码,你可以下载下来看看,然后找出自

图片轮播,不知道这是什么错误啊啊 android

问题描述 图片轮播,不知道这是什么错误啊啊 android 解决方案 ImageLoader需要初始化有没有初始化语句,详细的参数设置可以看ImageLoader的配置文档 //创建默认的ImageLoader配置参数 ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); //Initialize ImageLoader with configuration. ImageLo

Android客户端实现图片轮播控件_Android

本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分     我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成:        首先我们要有用来显示图片的View对象,根据上图中底部中央的5个点,我们知道需要5个ImageView来显示需要轮播的图片,另外还需要5个ImageView来显示5个点.现在考虑以下轮播组件应该具有的行为,首先需要每隔一定时间间隔切换到下一张图片,并且图片间切换的效果应该是平滑的,就像"翻书&qu

Android开发之滑动图片轮播标题焦点_Android

先给大家这是下效果图: 谷歌提供的v4包,ViewPager 在布局文件中,先添加<android.support.v4.view.ViewPager/>控件,这个只是轮播的区域 在布局文件中,布置标题描述部分 线性布局,竖向排列,背景色黑色半透明,这个布局和上面的ViewPager底部对齐layout_alignBottom="@id/xxx" <TextView/>居中显示, 小点部分,先放过空的LinearLayout,id是ll_points在代码中对其

Android 图片轮播实现及获取Android的资源信息

在手机app应用中我们经常会看到图片轮播动画效果,Android中想要实现图片轮播,主要用到ViewPager这个控件来实现,这个控件的主要功能是实现图片的滑动效果. 那么有了滑动,在滑动的基础上附上图片也就实现了图片轮播的效果...这个控件类似于ListView,需要使用到适配器这个东西,适配器在这里的作用是为轮播时设置一些效果...这里需要使用到PagerAdapter适配器...下面来一个例子,这个例子的效果是在图片轮播的同时显示播放的是第几张图片的信息...并且下面的点也是会随之进行变化

Android ViewPager实现图片轮播效果_Android

在app中图片的轮播显示可以说是非常常见的实现效果了,其实现原理不过是利用ViewPager,然后利用handler每隔一定的时间将ViewPager的currentItem设置为当前item的position+1即可.先来看看效果图吧:   就是实现这样的一个轮播广告的效果. 因为这个是自己为了练习仿照某旅游类App做的,所以这里的数据是使用抓包工具抓取的,准备数据等工作就不在这里赘述了,反正数据的添加大体都是相同的.我的思路是这样的,从网络上实时的获取数据(当然你也可以将数据写死),然后通过