实例介绍
【实例简介】
【实例截图】
【核心代码】异步加载 自动切换.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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论