实例介绍
【实例简介】
【实例截图】
【核心代码】异步加载 自动切换.zip
package com.teffy.viewpager; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import com.teffy.viewpager.bean.ImageAndUrl; import com.teffy.viewpager.tools.AsyncImageLoader; import com.teffy.viewpager.tools.AsyncImageLoader.ImageCallBack; import com.teffy.viewpager.tools.FileCache; import com.teffy.viewpager.utils.ToastUtils; public class MainActivity extends Activity { private ViewPager mViewPager; private ViewPagerAdapter adapter; LayoutInflater inflater; AsyncImageLoader asyncImageLoader; Bitmap defaultbmp; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inflater = getLayoutInflater(); defaultbmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); asyncImageLoader = new AsyncImageLoader(); mViewPager = (ViewPager) findViewById(R.id.vp_guanggao); mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { // title.setText(titles[position]); System.out.println("position " position); dots.get(oldPosition).setBackgroundResource(R.drawable.dxt_point_nomral); dots.get(position).setBackgroundResource(R.drawable.dxt_point_selected); oldPosition = position; currentItem = position; } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { System.out.println("onPageScrolled arg0-->" arg0 " ,arg1-->" arg1 " ,arg2-->" arg2); } @Override public void onPageScrollStateChanged(int arg0) { System.out.println("onPageScrollStateChanged arg0 -->" arg0); } }); getDatas(); } private ArrayList<ImageView> images; String[] urls = new String[] { "http://img2.mtime.cn/up/12/2432012/fe826018-3877-4046-b51d-31e76c2b9c9d_500.jpg", "http://pic5.nipic.com/20100106/3267716_155613095015_2.jpg", "http://pic11.nipic.com/20101210/2531170_111449259416_2.jpg", "http://pic11.nipic.com/20101210/2531170_111449179301_2.jpg", "http://www.foto8.net/files/201004/27/d272194910.jpg", "http://www.sootuu.com/photo/UploadFile/2006-4/20064304138937.jpg", "http://www.itxtbook.com/attachment/Day_081022/23_163307_e9b4513a7afee66.jpg", "http://img7.mypsd.com.cn/20120821/Mypsd_13920_201208211752500005B.jpg" }; List<ImageAndUrl> imageInfosShow = new ArrayList<ImageAndUrl>(); private void getDatas() { for (int i = 0; i < urls.length; i ) { ImageAndUrl item = new ImageAndUrl(); item.setImageurl(urls[i]); item.setUrl("item-->" i); imageInfosShow.add(item); } images = new ArrayList<ImageView>(); for (int i = 0; i < imageInfosShow.size(); i ) { ImageView item = new ImageView(this); images.add(item); } initDots(); adapter = new ViewPagerAdapter(); mViewPager.setAdapter(adapter); vpChangeTask(); } private ArrayList<View> dots = new ArrayList<View>(); private void initDots() { LinearLayout ll_vp_point = (LinearLayout) findViewById(R.id.ll_vp_point); // for (int i = 0; i < imageInfosShow.size(); i ) { for (int i = 0; i < imageInfosShow.size(); i ) { ImageView iv_image = (ImageView) inflater.inflate(R.layout.item_dots, null); if(i ==0){ iv_image.setBackgroundResource(R.drawable.dxt_point_selected); } iv_image.setTag(imageInfosShow.get(i)); ll_vp_point.addView(iv_image); dots.add(iv_image); } } // 切换图片 private class ViewPagerTask implements Runnable { @Override public void run() { currentItem = (currentItem 1) % imageInfosShow.size(); mHandler.obtainMessage().sendToTarget(); } } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { Animation animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.enter); // mViewPager.startAnimation(animation); mViewPager.setAnimationCacheEnabled(false); mViewPager.setAnimation(animation); mViewPager.setCurrentItem(currentItem); } }; private int oldPosition = 0;//记录上一次点的位置 private int currentItem; //当前页面 private ScheduledExecutorService scheduledExecutorService; private void vpChangeTask() { scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2,3, TimeUnit.SECONDS); } private class ViewPagerAdapter extends PagerAdapter { @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); } @Override public int getCount() { return imageInfosShow.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view.equals(object); } @Override public Object instantiateItem(final View view, int position) { ImageAndUrl item = imageInfosShow.get(position); final View imageLayout = inflater.inflate(R.layout.item_pager_image, null); final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image); final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading); final String imgUrl = item.getImageurl(); imageView.setTag(imgUrl); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // ImageAndUrl imageInfo = (ImageAndUrl) v.getTag(); // if (!TextUtils.isEmpty(imageInfo.getUrl())) { // Uri url = Uri.parse(imageInfo.getUrl()); // Intent it = new Intent(Intent.ACTION_VIEW, url); // startActivity(it); // } else { // ToastUtils.showShort(MainActivity.this, "暂无此链接信息"); // return; // } } }); final ProgressBar progressBar = (ProgressBar) imageLayout.findViewById(R.id.loading); // 如果联网 if (checkConnection()) { Bitmap bmpFromSD = FileCache.getInstance().getBmp(imgUrl); if (null != bmpFromSD) { imageView.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, bmpFromSD.getHeight())); imageView.setImageBitmap(bmpFromSD); progressBar.setVisibility(View.INVISIBLE); } else { Drawable cachedImage = asyncImageLoader.loaDrawable(imgUrl, new ImageCallBack() { @Override public void imageLoaded(Drawable imageDrawable) { Bitmap bitmap = drawToBmp(imageDrawable); FileCache.getInstance().savaBmpData(imgUrl, bitmap);// 先缓存起来 // FileCache.getInstance().savaBmpData(view.getTag().toString(), bitmap);// 先缓存起来 ImageView imageViewByTag = null; if (null != bitmap) { imageViewByTag = (ImageView) imageView.findViewWithTag(imgUrl); imageViewByTag.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT,bitmap.getHeight())); } if (imageViewByTag != null) { if (isWifi(MainActivity.this)) { imageViewByTag .setImageBitmap(bitmap); progressBar .setVisibility(View.INVISIBLE); } else { if (bitmap != null) { imageViewByTag.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); imageViewByTag.setImageBitmap(bitmap); imageViewByTag.setScaleType(ImageView.ScaleType.MATRIX); progressBar.setVisibility(View.INVISIBLE); } } } } }); if (cachedImage == null) { imageView.setImageBitmap(defaultbmp); } else { if (isWifi(MainActivity.this)) { Bitmap bitmap = drawToBmp(cachedImage); imageView.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, bitmap.getHeight())); imageView.setImageBitmap(bitmap); } else { imageView.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); Bitmap bitmap = drawToBmp(cachedImage); imageView.setImageBitmap(bitmap); } progressBar.setVisibility(View.INVISIBLE); } } } else { Bitmap bmpFromSD = FileCache.getInstance().getBmp(imgUrl); if (null != bmpFromSD) { ImageView imageViewByTag = (ImageView) imageView.findViewWithTag(imgUrl); imageViewByTag.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, bmpFromSD.getHeight())); imageViewByTag.setImageBitmap(bmpFromSD); progressBar.setVisibility(View.INVISIBLE); } else { imageView.setImageBitmap(defaultbmp); progressBar.setVisibility(View.GONE); } } ((ViewPager) view).addView(imageLayout, 0); // return images.get(position % images.size()); return imageLayout; } } /** * Drawable转换成Bitmap * @param d * @return */ public Bitmap drawToBmp(Drawable d) { if (null != d) { BitmapDrawable bd = (BitmapDrawable) d; return bd.getBitmap(); } return null; } /** * 检测网络连接 * * @return */ public boolean checkConnection() { ConnectivityManager connectivityManager = (ConnectivityManager) this .getSystemService(CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null) { return networkInfo.isAvailable(); } return false; } /** * Wifi是否可用 * @param mContext * @return */ public boolean isWifi(Context mContext) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getTypeName().equals("WIFI")) { return true; } return false; } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论