基本信息
源码名称:android 异步加载 自动切换
源码大小:0.71M
文件格式:.zip
开发语言:Java
更新时间:2015-12-23
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
异步加载 自动切换.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; } }