/**
*
*/
package com.keju.maomao.activity.bar;
import java.lang.ref.SoftReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import com.keju.maomao.AsyncImageLoader;
import com.keju.maomao.AsyncImageLoader.ImageCallback;
import com.keju.maomao.CommonApplication;
import com.keju.maomao.R;
import com.keju.maomao.activity.base.BaseActivity;
import com.keju.maomao.bean.BarBean;
import com.umeng.analytics.MobclickAgent;
/**
* 酒吧环境图片大图
*
* @author zhouyong
* @data 创建时间:2013-10-28 上午10:50:01
*/
public class PhotoShowActivity extends BaseActivity implements OnClickListener {
private ImageButton ibLeft;
private Button btnRight;
private TextView tvTitle;
private ViewPager mViewPager;
private PhotoPagerAdapter photoPagerAdapter;
private int screenWidth;// 屏幕宽度
private List<BarBean> photoBeans;
private int currentPhotoPosition;// 当前选择图片索引
private int currPhotoId;
public static Map<String, SoftReference<Drawable>> imageCache = new HashMap<String, SoftReference<Drawable>>();
public static int maxSize = 3;
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_photo);
photoBeans = (List<BarBean>) getIntent().getSerializableExtra("photoBeans");
if (photoBeans == null) {
photoBeans = new ArrayList<BarBean>();
}
currPhotoId = getIntent().getIntExtra("photoId", 0);
currentPhotoPosition = getCurrentPhotoPosition();
findView();
fillData();
screenWidth = this.getWindowManager().getDefaultDisplay().getWidth();
// 添加到容器中
((CommonApplication) getApplicationContext()).addActivity(this);
if (imageCache == null){
imageCache = new HashMap<String, SoftReference<Drawable>>();
}
}
private void findView() {
ibLeft = (ImageButton) this.findViewById(R.id.ibLeft);
btnRight = (Button) this.findViewById(R.id.btnRight);
tvTitle = (TextView) this.findViewById(R.id.tvTitle);
int size = 0;
if (photoBeans != null) {
size = photoBeans.size();
}
tvTitle.setText((currentPhotoPosition + 1) + "/" + size);
mViewPager = (ViewPager) this.findViewById(R.id.photo_detail_pager);
photoPagerAdapter = new PhotoPagerAdapter(this, photoBeans);
mViewPager.setAdapter(photoPagerAdapter);
mViewPager.setCurrentItem(currentPhotoPosition);
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
currentPhotoPosition = index;
tvTitle.setText((index + 1) + "/" + photoBeans.size());
if (index + 1 == photoBeans.size()) {
showShortToast("这已经是最后一张了");
}
BarBean photoBean = photoBeans.get(currentPhotoPosition);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
private void fillData() {
ibLeft.setImageResource(R.drawable.ic_btn_left);
ibLeft.setOnClickListener(this);
btnRight.setOnClickListener(this);
//tvTitle.setText("酒吧环境图片");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ibLeft:
finish();
break;
default:
break;
}
}
/**
* 获取点击的是哪张;
*
* @return
*/
private int getCurrentPhotoPosition() {
if (photoBeans != null) {
int photoSize = photoBeans.size();
for (int i = 0; i < photoSize; i++) {
BarBean photoBean = photoBeans.get(i);
int id = photoBean.getPictureId();
if (id != 0) {
if (id == currPhotoId) {
return i;
}
}
}
}
return 0;
}
/**
* 图片Pager容器
*
* @author syghh
*
*/
private class PhotoPagerAdapter extends PagerAdapter {
private Context mContext;
private List<BarBean> photoBeans;
public PhotoPagerAdapter(Context mContext, List<BarBean> photoBeans) {
this.mContext = mContext;
this.photoBeans = photoBeans;
}
@Override
public void destroyItem(ViewGroup container, int arg1, Object arg2) {
container.removeView((View) arg2);
}
@Override
public Object instantiateItem(View container, int position) {
BarBean photoBean = photoBeans.get(position);
View view = LayoutInflater.from(mContext).inflate(R.layout.photo_detail, null);
final ImageView ivPhoto = (ImageView) view.findViewById(R.id.ivPhoto);
final ImageView ivPhotoDefault = (ImageView) view.findViewById(R.id.ivPhotoDefault);
String hightImgUrl = photoBean.getBarEnviromentPhoto();
final View progress = view.findViewById(R.id.progress);
Drawable cacheDrawable = AsyncImageLoader.getInstance().loadAsynSoftRefeDrawable(imageCache, maxSize, hightImgUrl, new ImageCallback() {
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
if (imageDrawable != null) {
ivPhoto.setVisibility(View.VISIBLE);
int oldwidth = imageDrawable.getIntrinsicWidth();
int oldheight = imageDrawable.getIntrinsicHeight();
LayoutParams lp = ivPhoto.getLayoutParams();
lp.width = screenWidth;
lp.height = (oldheight * screenWidth) / oldwidth;
ivPhoto.setLayoutParams(lp);
ivPhoto.setImageDrawable(imageDrawable);
progress.setVisibility(View.GONE);
ivPhotoDefault.setVisibility(View.GONE);
PhotoPagerAdapter.this.notifyDataSetChanged();
} else {
ivPhoto.setVisibility(View.GONE);
progress.setVisibility(View.VISIBLE);
ivPhotoDefault.setVisibility(View.VISIBLE);
}
}
});
if (cacheDrawable != null) {
ivPhoto.setVisibility(View.VISIBLE);
int oldwidth = cacheDrawable.getIntrinsicWidth();
int oldheight = cacheDrawable.getIntrinsicHeight();
LayoutParams lp = ivPhoto.getLayoutParams();
lp.width = screenWidth;
lp.height = (oldheight * screenWidth) / oldwidth;
ivPhoto.setLayoutParams(lp);
ivPhoto.setImageDrawable(cacheDrawable);
ivPhotoDefault.setVisibility(View.GONE);
progress.setVisibility(View.GONE);
} else {
ivPhoto.setVisibility(View.GONE);
progress.setVisibility(View.VISIBLE);
ivPhotoDefault.setVisibility(View.VISIBLE);
}
((ViewPager) container).addView(view, 0);
return view;
}
@Override
public int getCount() {
return photoBeans.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
}
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}