获取网络图片实现网络轮播
来源:互联网 发布:eviews时间序列数据 编辑:程序博客网 时间:2024/06/18 02:31
package hongbo.lamp.com.activity.view;import android.content.Context;import android.os.Handler;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import hongbo.lamp.com.kameng.R;import com.squareup.picasso.Picasso;import java.util.ArrayList;/** * 广告图片自动轮播控件 * @author minking */public class ImageCycleView extends LinearLayout { /** * 上下文 */ private Context mContext; /** * 图片轮播视图 */ private ViewPager mAdvPager = null; /** * 滚动图片视图适配器 */ private ImageCycleAdapter mAdvAdapter; /** * 图片轮播指示器控件 */ private ViewGroup mGroup; /** * 图片轮播指示器-个图 */ private ImageView mImageView = null; /** * 滚动图片指示器-视图列表 */ private ImageView[] mImageViews = null; /** * 图片滚动当前图片下标 */ private int mImageIndex = 0; /** * 手机密度 */ private float mScale; /** * @param context */ public ImageCycleView(Context context) { super(context); } /** * @param context * @param attrs */ public ImageCycleView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; mScale = context.getResources().getDisplayMetrics().density; LayoutInflater.from(context).inflate(R.layout.ad_cycle_view, this); mAdvPager = (ViewPager) findViewById(R.id.adv_pager); mAdvPager.setOnPageChangeListener(new GuidePageChangeListener()); mAdvPager.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: // 开始图片滚动 startImageTimerTask(); break; default: // 停止图片滚动 stopImageTimerTask(); break; } return false; } }); // 滚动图片右下指示器视图 mGroup = (ViewGroup) findViewById(R.id.viewGroup); } /** * 装填图片数据 * @param imageUrlList * @param imageCycleViewListener */ public void setImageResources(ArrayList<String> imageUrlList, ImageCycleViewListener imageCycleViewListener) { // 清除所有子视图 mGroup.removeAllViews(); // 图片广告数量 final int imageCount = imageUrlList.size(); mImageViews = new ImageView[imageCount]; for (int i = 0; i < imageCount; i++) { mImageView = new ImageView(mContext); int imageParams = (int) (mScale * 10 + 0.5f);// XP与DP转换,适应不同分辨率 int imagePadding = (int) (mScale * 5 + 0.5f); mImageView.setLayoutParams(new LayoutParams(imageParams, imageParams)); mImageView.setPadding(imagePadding, imagePadding, imagePadding, imagePadding); mImageViews[i] = mImageView; if (i == 0) { mImageViews[i].setBackgroundResource(R.mipmap.gundong); } else { mImageViews[i].setBackgroundResource(R.mipmap.gundong_1); } mGroup.addView(mImageViews[i]); } mAdvAdapter = new ImageCycleAdapter(mContext, imageUrlList, imageCycleViewListener); mAdvPager.setAdapter(mAdvAdapter); startImageTimerTask(); } /** * 开始轮播(手动控制自动轮播与否,便于资源控制) */ public void startImageCycle() { startImageTimerTask(); } /** * 暂停轮播——用于节省资源 */ public void pushImageCycle() { stopImageTimerTask(); } /** * 开始图片滚动任务 */ private void startImageTimerTask() { stopImageTimerTask(); // 图片每3秒滚动一次 mHandler.postDelayed(mImageTimerTask, 4000); } /** * 停止图片滚动任务 */ private void stopImageTimerTask() { mHandler.removeCallbacks(mImageTimerTask); } private Handler mHandler = new Handler(); /** * 图片自动轮播Task */ private Runnable mImageTimerTask = new Runnable() { @Override public void run() { if (mImageViews != null) { // 下标等于图片列表长度说明已滚动到最后一张图片,重置下标 if ((++mImageIndex) == mImageViews.length) { mImageIndex = 0; } mAdvPager.setCurrentItem(mImageIndex); } } }; /** * 轮播图片状态监听器 * * @author minking */ private final class GuidePageChangeListener implements OnPageChangeListener { @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_IDLE) startImageTimerTask(); // 开始下次计时 } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int index) { // 设置当前显示的图片下标 mImageIndex = index; // 设置图片滚动指示器背景 mImageViews[index].setBackgroundResource(R.mipmap.lunbo_point_press); for (int i = 0; i < mImageViews.length; i++) { if (index != i) { mImageViews[i].setBackgroundResource(R.mipmap.lunbo_point_normal); } } } } private class ImageCycleAdapter extends PagerAdapter { /** * 图片视图缓存列表 */ private ArrayList<ImageView> mImageViewCacheList; /** * 图片资源列表 */ private ArrayList<String> mAdList = new ArrayList<String>(); /** * 广告图片点击监听器 */ private ImageCycleViewListener mImageCycleViewListener; private Context mContext; public ImageCycleAdapter(Context context, ArrayList<String> adList, ImageCycleViewListener imageCycleViewListener) { mContext = context; mAdList = adList; mImageCycleViewListener = imageCycleViewListener; mImageViewCacheList = new ArrayList<ImageView>(); } @Override public int getCount() { return mAdList.size(); } @Override public boolean isViewFromObject(View view, Object obj) { return view == obj; } @Override public Object instantiateItem(ViewGroup container, final int position) { String imageUrl = mAdList.get(position); ImageView imageView = null; if (mImageViewCacheList.isEmpty()) { imageView = new ImageView(mContext); imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); imageView.setScaleType(ImageView.ScaleType.FIT_XY); } else { imageView = mImageViewCacheList.remove(0); } // 设置图片点击监听 imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mImageCycleViewListener.onImageClick(position, v); } }); imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { // 停止轮播 case MotionEvent.ACTION_DOWN: stopImageTimerTask(); break; // 开始轮播 case MotionEvent.ACTION_UP: startImageTimerTask(); break; default: startImageTimerTask(); break; } return false; } }); imageView.setTag(imageUrl); container.addView(imageView); mImageCycleViewListener.displayImage(imageUrl, imageView); Picasso.with(getContext()).load(imageUrl).into(imageView);//imageLoader.displayImage(imageUrl, imageView, ImageLoaderutils.getOpt()); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ImageView view = (ImageView) object; container.removeView(view); mImageViewCacheList.add(view); } } /** * 轮播控件的监听事件 * * @author minking */ public static interface ImageCycleViewListener { /** * 加载图片资源 * * @param imageURL * @param imageView */ public void displayImage(String imageURL, ImageView imageView); /** * 单击图片事件 * * @param position * @param imageView */ public void onImageClick(int position, View imageView); }}
<pre name="code" class="html">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ad_rl" android:layout_width="match_parent" android:layout_height="170dp" > <android.support.v4.view.ViewPager android:id="@+id/adv_pager" android:layout_width="match_parent" android:layout_height="170dp" > </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/viewGroup" android:layout_width="match_parent" android:layout_height="15dp" android:layout_alignParentBottom="true" android:gravity="center_horizontal" android:layout_marginRight="12dp" android:orientation="horizontal" > </LinearLayout></RelativeLayout>
首先把此类和他对应的XML文件导入项目
然后再主项目里面:
package hongbo.lamp.com.activity.fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import com.squareup.picasso.Picasso;import java.util.ArrayList;import hongbo.lamp.com.activity.base.BaseFragment;import hongbo.lamp.com.activity.view.ImageCycleView;import hongbo.lamp.com.kameng.R;/** * Created by Administrator on 2016/5/2. */public class Fragment_shouye extends BaseFragment{ private ImageCycleView imageCyclView; private ArrayList<String> list; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_shouye,null); return view; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(); initData(); initViewOper(); } private void initData() { list = new ArrayList<String>(); list.add("http://img.ugirls.com/uploads/cooperate/baidu/20160408jzx2.jpg"); list.add("http://pic1.ooopic.com/uploadfilepic/sheji/2010-01-15/OOOPIC_1982zpwang407_2010011582d1a0a490670dec.jpg"); list.add("http://img3.imgtn.bdimg.com/it/u=1293564423,1549491162&fm=206&gp=0.jpg"); } private void initViewOper() { StartCarousel(list); } private void initView() { imageCyclView = (ImageCycleView) getView().findViewById(R.id.imageCycleView); } /** * 启动轮播的方法 参数是Url的路径集合 在获取完URL之后就调用该方法 */ public void StartCarousel( ArrayList<String> mImageUrl){ /** * 设置监听器 和图片路径 */ imageCyclView.setImageResources(mImageUrl, mAdCycleViewListener); } private ImageCycleView.ImageCycleViewListener mAdCycleViewListener = new ImageCycleView.ImageCycleViewListener() { @Override public void onImageClick(int position, View imageView) { } @Override public void displayImage(String imageURL, ImageView imageView) { Picasso.with(getContext()).load(imageURL).into(imageView); } };}
0 0
- 获取网络图片实现网络轮播
- 网络获取图片轮播
- Android ViewPager从网络获取图片实现无限轮播
- Android网络图片实现图片轮播
- 网络获取图片viewpager无限轮播
- Viewpager轮播 网络获取图片
- 网络获取图片实现无线自动轮播
- 获取网络图片httpclicent--AsyncTask-小圆点图片轮播
- android 加载网络图片 实现图片轮播
- Viewpager获取网络图片进行自动无限轮播
- 获取网络图片+ViewPager+自动轮播
- ViewPage+Volley实现动态加载网络图片广告轮播 !
- ViewPager+RadioGroup 实现网络加载图片的轮播
- ViewPager网络加载图片并无限轮播实现
- Android中ConvenientBanner的使用--获取网络图片 --(实现效果是自动轮播图片)
- 网络实现无线轮播
- 网络加载图片及轮播
- ViewPager网络加载图片+无限轮播
- Java学习笔记之常用方法类(三) Data和Calendar类、Math、BigInteger和Random类、Random类
- Android 沿着线绘制文字
- java并发编程
- 5..4
- 穿越矩阵
- 获取网络图片实现网络轮播
- Python简单爬虫学习
- Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)
- SDAU dp专题 1001
- HDU2048
- 易语言保存,另存为代码
- 每隔几行读取文件
- 邻接矩阵图的创建
- emWin实现BMP位图皮肤之Button篇