JSON

android使用ViewPager实现轮播效果

字号+ 作者:H5之家 来源:H5之家 2017-04-28 12:03 我要评论( )

本文为您介绍android使用ViewPager实现轮播效果,图片,圆点,视图,下标,设置的相关教程资料资讯。

在这里您可以找到关于android使用ViewPager实现轮播效果的Android教程相关资料,希望对您有帮助!教程吧提示广大学习者:本文只能为提供参考,不一定能成为您想要的结果。以下是文章正文

ViewPager:一个可以实现视图左右滑动切换的控件。

ViewPager的基本使用:

ViewPager的视图需要通过PagerAdapter来实现显示。

PagerAdapter的主要方法:

  ● getCount 视图的数量

  ● instantiateItem 添加视图

  ● destroyItem 销毁视图

  ● isViewFromObject 是否由对象创建视图

ViewPager的常用方法:

setAdapter 设置适配器

addOnPageChangeListener 监听页面切换的状态

setCurrentItem 设置当前页面的索引

实现广告轮播

技术点分析:

1、网络连接

2、JSON解析

3、ViewPager的初始化

4、图片的异步加载

5、圆点指示器的实现

使用selector+shape实现圆点图片

动态创建ImageView添加到集合中,同时添加到布局中

在ViewPager切换事件中,切换圆点状态

6、自动切换效果

使用Handler的post方法,定时执行代码
资源文件:
mydot.xml //创建圆点资源,放在drawable文件下

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_enabled="true"> <shape android:shape="oval"> <size android:width="5dp" android:height="5dp"/> <solid android:color="#fff"/> </shape> </item> <item android:state_enabled="false"> <shape android:shape="oval"> <size android:width="5dp" android:height="5dp"/> <solid android:color="#8EE5EE"/> </shape> </item> </selector>

布局文件:

activity_main.xml

<RelativeLayout 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" tools:context=".MainActivity" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv_list" /> </RelativeLayout>

activity_banner.xml

<FrameLayout 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" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/vp_image" android:layout_width="wrap_content" android:layout_height="150dp" android:layout_gravity="center" /> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:id="@+id/layout" android:layout_gravity="bottom" android:gravity="center" android:orientation="horizontal" ></LinearLayout> </FrameLayout>

java代码

ImageLoader.java //该代码是通过URL获取图片资源

package cn.edu.huse.banner_re.util; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * 图片加载的工具类 * @author xray * */ public class ImageLoader { /** * 图片加载完成的回调接口 * 添加URL参数,用于做图片错位判断 */ public interface OnImageLoadListener{ //完成图片加载 void onImageLoadComplete(String url, Bitmap bitmap); } private OnImageLoadListener mListener; /** * 启动图片加载任务 * @param urlStr * @param listener */ public void loadImage(String urlStr,OnImageLoadListener listener){ this.mListener = listener; new ImageLoadTask().execute(urlStr); } /** * 图片加载任务 * @author xray * */ class ImageLoadTask extends AsyncTask<String,Void,ImageLoadTask.UrlAndBitmap>{ @Override protected UrlAndBitmap doInBackground(String... params) { try { //创建URL,指定图片地址 URL url = new URL(params[0]); //打开连接获得HttpURLConnection对象 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //获得文件输入流 InputStream stream = conn.getInputStream(); //把输入流转换为图片 Bitmap bmp = BitmapFactory.decodeStream(stream); //关闭流 stream.close(); return new UrlAndBitmap(params[0],bmp); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } //包装图片地址和图片 class UrlAndBitmap{ String url; Bitmap bitmap; public UrlAndBitmap(String url, Bitmap bitmap) { this.url = url; this.bitmap = bitmap; } } @Override protected void onPostExecute(UrlAndBitmap result) { //进行接口回调 if(mListener != null){ mListener.onImageLoadComplete(result.url,result.bitmap); } } } }

JSONLoader.java
//读取服务器json

package cn.edu.huse.banner_re.util; import android.os.AsyncTask; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * 读取服务器JSON的工具类 * @author xray * */ public class JSONLoader { public interface OnJSONLoadListener{ void onJSONLoadComplete(String json); } private OnJSONLoadListener mListener; public void loadJSON(String urlStr,OnJSONLoadListener listener){ this.mListener = listener; new JSONLoadTask().execute(urlStr); } class JSONLoadTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... params) { try { URL url = new URL(params[0]); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream inputStream = conn.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; //StringBuffer 线程安全,性能低 VS StringBuilder 线程不安全,性能高 StringBuilder strB = new StringBuilder(); while((len = inputStream.read(buffer)) != -1){ //将字节码转换为String String str = new String(buffer,0,len); strB.append(str); } inputStream.close(); return strB.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { if(mListener != null){ mListener.onJSONLoadComplete(result); } } } }

MyViewPagerAdapter.java

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • [求助]数据库图片读取与重存

    [求助]数据库图片读取与重存

    2017-03-19 08:01

  • 微信小程序新手教程目录文件详解视图渲染详解

    微信小程序新手教程目录文件详解视图渲染详解

    2017-01-03 12:00

  • php生成二维码图片方法汇总

    php生成二维码图片方法汇总

    2017-01-01 16:00

  • AngularJS入门教程之链接与图片模板

    AngularJS入门教程之链接与图片模板

    2016-09-04 12:00

网友点评
"