Android ViewPager加载图片效果

 更新时间:2017年1月22日 11:04  点击:2637
android项目中经常需要用到ViewPager加载图片,那么如何解决呢?本文介绍了Android ViewPager加载图片效果的教程,有需要的同学请参见下文。

目前项目中需要用到ViewPager加载图片,现在在此记录一下。

首先先看布局文件:activity_main.xml

 

 代码如下复制代码

<RelativeLayoutxmlns: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.example.fly.viewpagerbanner.MainActivity">

 <android.support.v4.view.ViewPager

  android:id="@+id/viewpager"

  android:layout_above="@+id/ll"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"/>

 <LinearLayout

  android:id="@+id/ll"

  android:layout_marginTop="10.0dip"

  android:orientation="horizontal"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_marginBottom="24.0dip"

  android:layout_alignParentBottom="true"

  android:layout_centerHorizontal="true"/>

 

MainActivity

 

 代码如下复制代码

packagecom.example.fly.viewpagerbanner;

 

importandroid.support.v4.view.ViewPager;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.ImageView;

importandroid.widget.LinearLayout;

importandroid.widget.Toast;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

/**

 * 类名:

 * 类描述:ViewPager展示图片

 * 创建人:fly

 * 创建日期: 2017/1/16.

 * 版本:V1.0

 */

publicclassMainActivityextendsAppCompatActivityimplementsViewPager.OnPageChangeListener,View.OnClickListener {

 privateViewPager vp;

 privateViewPagerAdapter vpAdapter;

 privateList<Map> data;

 privateintlastValue = -1;// 是不是最后一张图片

 privateImageView[] dots;//底部小点图片

 privateintcurrentIndex;//记录当前选中位置

 @Override

 protectedvoidonCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  //  Intent intent = new Intent();

//  intent.putStringArrayListExtra("GalleryPlusActivity",ArrayList); // 怎么传递集合

  ArrayListimageLists = getIntent().getStringArrayListExtra("GalleryPlusActivity");// 动态获取展示图片的集合

  data = getData(imageLists);

  vp = (ViewPager) findViewById(R.id.viewpager);

  vpAdapter =newViewPagerAdapter(data,this);

  vp.setAdapter(vpAdapter);

  vp.addOnPageChangeListener(this);

  initDots();//初始化底部小点

 }

 //这个方法长度是动态的,可以改成你从服务器获取的图片,这样数量就不确定啦

 publicList<Map> getData(ArrayListimageLists) {

  List<Map> mData =newArrayList<>();

//  if (imageLists != null && imageLists.size() > 0) {

//   for (int i = 0; i < imageLists.size(); i++) {

//    Mapmap = new HashMap<>();

//    map.put("url", imageLists.get(i));

//    map.put("view", new ImageView(this));

//    mData.add(map);

//   }

//  }

  Mapmap =newHashMap<>();

  map.put("url","http://img2.duitang.com/uploads/item/201207/19/20120719132725_UkzCN.jpeg");

  map.put("view",newImageView(this));

  mData.add(map);

  Mapmap1 =newHashMap<>();

  map1.put("url","http://img4.duitang.com/uploads/item/201404/24/20140424195028_vtvZu.jpeg");

  map1.put("view",newImageView(this));

  mData.add(map1);

  Mapmap2 =newHashMap<>();

  map2.put("url","http://download.pchome.net/wallpaper/pic-5041-8-240x320.jpg");

  map2.put("view",newImageView(this));

  mData.add(map2);

  Mapmap3 =newHashMap<>();

  map3.put("url","http://www.mangowed.com/uploads/allimg/130425/572-130425105311304.jpg");

  map3.put("view",newImageView(this));

  mData.add(map3);

  returnmData;

 }

 privatevoidinitDots() {

  LinearLayout.LayoutParams mLayoutParams =newLinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

  mLayoutParams.setMargins(3,0,3,0);

  LinearLayout ll = (LinearLayout) findViewById(R.id.ll);

  dots =newImageView[data.size()];

  //循环取得小点图片

  for(inti =0; i < data.size(); i++) {

   dots[i] =newImageView(this);

   dots[i].setLayoutParams(mLayoutParams);

   dots[i].setBackgroundResource(R.drawable.dot);

   dots[i].setEnabled(true);//都设为灰色

   dots[i].setOnClickListener(this);

   dots[i].setTag(i);//设置位置tag,方便取出与当前位置对应

   ll.addView(dots[i]);

  }

  currentIndex =0;

  dots[currentIndex].setEnabled(false);//设置为白色,即选中状态

 }

 privatevoidsetCurView(intposition) {/**设置当前的引导页*/

  if(position<0|| position="">= data.size()) {return;}

  vp.setCurrentItem(position);

 }

 privatevoidsetCurDot(intposition) {/**设置当前引导小点的选中*/

  if(position<0|| position="">data.size() -1|| currentIndex == position) {return;}

  dots[position].setEnabled(false);

  dots[currentIndex].setEnabled(true);

  currentIndex = position;

 }

 @Override//当前页面被滑动时调用

 publicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels) {

  lastValue = position;

 }

 @Override

 publicvoidonPageSelected(intposition) {    //当新的页面被选中时调用

  setCurDot(position);//设置底部小点选中状态

 }

 @Override

 publicvoidonPageScrollStateChanged(intstate) {  //当滑动状态改变时调用

  if(state ==0){

   if(lastValue == data.size()-1){

    Toast.makeText(this,"已经是最后一张了", Toast.LENGTH_SHORT).show();

   }

  }

 }

 @Override

 publicvoidonClick(View v) {

  intposition = (Integer)v.getTag();

  setCurView(position);

  setCurDot(position);

 }

}

 

ViewPagerAdapter

 

 代码如下复制代码

packagecom.example.fly.viewpagerbanner;

importandroid.content.Context;

importandroid.support.v4.view.PagerAdapter;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.ImageView;

importcom.bumptech.glide.Glide;

importcom.bumptech.glide.load.engine.DiskCacheStrategy;

importjava.util.List;

importjava.util.Map;

publicclassViewPagerAdapterextendsPagerAdapter {

 Context context;

 List<Map> viewLists;

 publicViewPagerAdapter(List<Map> lists, Context context) {

  this.viewLists = lists;

  this.context = context;

 }

 @Override

 publicintgetCount() { //获得size

  returnviewLists.size();

 }

 @Override

 publicbooleanisViewFromObject(View view, Object object) {

  returnview == object;

 }

 @Override

 publicvoiddestroyItem(ViewGroup view,intposition, Object object) {//销毁Item

  ImageView x = (ImageView) viewLists.get(position).get("view");

  x.setScaleType(ImageView.ScaleType.FIT_CENTER);

  view.removeView(x);

 }

 @Override

 publicObject instantiateItem(ViewGroup view,intposition){//实例化Item

  ImageView imageView = (ImageView) viewLists.get(position).get("view");

  imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

  Glide.with(context)

    .load(viewLists.get(position).get("url").toString())

//    .placeholder(R.mipmap.new_default)

    .error(R.mipmap.ic_launcher)

    .diskCacheStrategy(DiskCacheStrategy.RESULT)

    .into(imageView);

  view.addView(imageView,0);

  returnviewLists.get(position).get("view");

 }

}

 

是不是很简单。

安卓手机如何可以多开微信?下面小编给大家带来了安卓手机多开微信的教程,感兴趣的朋友来看一看吧。

不少网友会在后台给小编留言,他们想要了解一下关于微信分身的教程。今天,我们就以安卓手机为例子给大家讲解一下微信分身的教程,那么,安卓手机怎么微信分身?一起来了解一下安卓手机微信分身教程!

应用多开助手

  安卓手机微信分身教程:

第一步:下载多开软件(如:应用多开助手)

  第二步:选择微信点击制作

打开软件,第一眼小编就看到了微信,于是点击制作,等待几分钟制作分身包。

应用多开助手

第三步:分身包制作完成并安装

N分钟以后,当你的手机弹出的框内容为开始签名身份文件的时候证明马上就好了。

应用多开助手

  第四步:安装第二个微信

分身包装好后,你的手机就会弹出安装的窗口。点击安装。静待安装成功。

应用多开助手

  第五步:检查安装成功

安装成功可以直接打开,或者是关闭,再打开;

小编是先关闭到桌面上查看一下;

咦,发现了个缺点,两个微信的名字一模一样;

不过小编已经很满足了;

应用多开助手

  第六步:登录

安装成功了,试下看能否登录成功;

登录的时候发现,需要验证才可以,验证问题是,选择出至少两个好友的头像,这个问题对于小编来说太简单了(这步小编忘记截图了);

验证完成登录成功;

应用多开助手

  第七步:发消息给小伙伴验证

发条消息给小伙伴,看看小伙伴是否能收到信息;

验证成功,到此多装成功;

应用多开助手

  第八步:再制作一个

和上面的制作步骤一样,再来制作一个;

小编没有多余的微信号了,麻烦亲们再试下;

应用多开助手

应用多开助手

  第九步:安全验证

打开手机自带的安全中心进行安全扫描:安全;

应用多开助手

小米手机的录屏功能支持哪些手机型号?下面小编整理了支持的手机型号,感兴趣的朋友可以来看一看。

小米手机录屏支持型号

相信很多人喜欢用小米,一个很大的原因便是功能丰富多样的MIUI。而本周,MIUI又更新了一个很多人非常期待的功能:录屏。目前支持的机型有小米3/4/5以及小米note,后续会继续完善。

小米手机录屏功能支持哪些型号 三联

对于这样一个贴心又实用的功能,其应用场景当然也是非常多的,比如记录和解说精彩的游戏过程;使用与分享APP的使用教程;随心所欲的吐槽;清晰地呈现Bug的复杂步骤等等。

而小米MIUI屏幕录制也有很多比较有意思的特点:首先无需ROOT,这样可以使手机的使用环境更安全;2.操作简单、极易上手,界面清晰;3.支持玩家解说;4.贴心的悬浮播放/停止按钮, 并且不会被录制到视频中;5.根据需要可自由组合分辨率、视频画质、帧数的设置;6.帮您录制所有的操作(包括界面滑动、所有物理按键);7.浏览、播放、删除、分享录制好的视频;

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04