时间:2021-05-21
目前项目中需要用到ViewPager加载图片,现在在此记录一下。
首先先看布局文件:activity_main.xml
<?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.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"/></RelativeLayout>MainActivity
package com.example.fly.viewpagerbanner;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 类名: * 类描述:ViewPager展示图片 * 创建人:fly * 创建日期: 2017/1/16. * 版本:V1.0 */public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener,View.OnClickListener { private ViewPager vp; private ViewPagerAdapter vpAdapter; private List<Map<String, Object>> data; private int lastValue = -1; // 是不是最后一张图片 private ImageView[] dots; //底部小点图片 private int currentIndex; //记录当前选中位置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Intent intent = new Intent();// intent.putStringArrayListExtra("GalleryPlusActivity",ArrayList<String>); // 怎么传递集合 ArrayList<String> imageLists = getIntent().getStringArrayListExtra("GalleryPlusActivity"); // 动态获取展示图片的集合 data = getData(imageLists); vp = (ViewPager) findViewById(R.id.viewpager); vpAdapter = new ViewPagerAdapter(data,this); vp.setAdapter(vpAdapter); vp.addOnPageChangeListener(this); initDots();//初始化底部小点 } //这个方法长度是动态的,可以改成你从服务器获取的图片,这样数量就不确定啦 public List<Map<String, Object>> getData(ArrayList<String> imageLists) { List<Map<String, Object>> mData = new ArrayList<>();// if (imageLists != null && imageLists.size() > 0) {// for (int i = 0; i < imageLists.size(); i++) {// Map<String, Object> map = new HashMap<>();// map.put("url", imageLists.get(i));// map.put("view", new ImageView(this));// mData.add(map);// }// } Map<String, Object> map = new HashMap<>(); map.put("url", "http://img2.duitang.com/uploads/item/201207/19/20120719132725_UkzCN.jpeg"); map.put("view", new ImageView(this)); mData.add(map); Map<String, Object> map1 = new HashMap<>(); map1.put("url", "http://img4.duitang.com/uploads/item/201404/24/20140424195028_vtvZu.jpeg"); map1.put("view", new ImageView(this)); mData.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("url", "http://download.pchome.net/wallpaper/pic-5041-8-240x320.jpg"); map2.put("view", new ImageView(this)); mData.add(map2); Map<String, Object> map3 = new HashMap<>(); map3.put("url", "http://.bumptech.glide.load.engine.DiskCacheStrategy;import java.util.List;import java.util.Map;public class ViewPagerAdapter extends PagerAdapter { Context context; List<Map<String, Object>> viewLists; public ViewPagerAdapter(List<Map<String, Object>> lists, Context context) { this.viewLists = lists; this.context = context; } @Override public int getCount() { //获得size return viewLists.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup view, int position, Object object) { //销毁Item ImageView x = (ImageView) viewLists.get(position).get("view"); x.setScaleType(ImageView.ScaleType.FIT_CENTER); view.removeView(x); } @Override public Object instantiateItem(ViewGroup view, int position){ //实例化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); return viewLists.get(position).get("view"); }}是不是很简单。
最后附上demo:http://xiazai.jb51.net/201701/yuanma/ViewPager(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前写过一篇文章:Android自定义ViewPager实现个性化的图片切换效果,有朋友提出,ViewPager自带了一个setPageTransformer用
1、概述之前写过一篇博文:Android自定义ViewPager打造千变万化的图片切换效果。有兄弟提出,ViewPager自带了一个setPageTransfo
对Android利用ViewPager实现图片可以左右循环滑动效果,感兴趣的朋友可以直接点击查看内容详情。主要介绍如何实现ViewPager自动播放,循环滚动的
据说Android最推荐的是在ViewPager中使用FragMent,即ViewPager中的页面不像前面那样用LayoutInflater直接从布局文件加载
前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接:ANDROID中使用VIEWFLIPPE