package com.luckymonkey.ui.image;
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
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.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.luckymonkey.AppController;
import com.luckymonkey.R;
import com.luckymonkey.ui.base.BaseActivity;
public class BrowseImageActivity extends BaseActivity {
public static final String EXTRA_IMAGW_FROM = "image_from";
public static final String EXTRA_IMAGW_INDEX = "image_index";
public static final String EXTRA_IMAGW_ARRAY = "image_array";
public static final String EXTRA_IMAGW_DESC = "image_desc";
private RelativeLayout rlTitleBar;
private ScrollView svDesc;
private TextView tvDesc;
private TextView tvIndex;
protected ViewPager vpImage;
protected Integer mIndex;
private ArrayList<String> mImages = new ArrayList<String>();
private String mDesc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_browse_image);
}
@Override
public void onInit() {
Intent intent = getIntent();
if (intent != null) {
mIndex = intent.getIntExtra(EXTRA_IMAGW_INDEX, 0);
mImages = (ArrayList<String>) intent.getSerializableExtra(EXTRA_IMAGW_ARRAY);
mDesc = intent.getStringExtra(EXTRA_IMAGW_DESC);
}
setUp();
}
@Override
public void onFindViews() {
rlTitleBar = (RelativeLayout) findViewById(R.id.rl_title_bar);
svDesc = (ScrollView) findViewById(R.id.sv_desc);
tvDesc = (TextView) findViewById(R.id.tv_desc);
tvIndex = (TextView) findViewById(R.id.tv_index);
vpImage = (ViewPager) findViewById(R.id.vpImage);
vpImage.setOffscreenPageLimit(1);
vpImage.setPageMargin(40);
ImagePagerAdapter adapter = new ImagePagerAdapter(getSupportFragmentManager());
adapter.setListData(mImages);
vpImage.setAdapter(adapter);
vpImage.setCurrentItem(mIndex);
}
@Override
public void onInitViewData() {
if (mImages == null || mImages.size() == 0) {
tvIndex.setVisibility(View.GONE);
tvDesc.setVisibility(View.GONE);
} else {
tvIndex.setText("1/" + mImages.size());
tvDesc.setText(mDesc);
svDesc.setVisibility(!TextUtils.isEmpty(mDesc) ? View.VISIBLE : View.GONE);
}
}
@Override
public void onBindListener() {
vpImage.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
tvIndex.setVisibility(View.VISIBLE);
tvIndex.setText((position + 1) + "/" + mImages.size());
// tvDesc.setText(((ImageVo) mImages.get(position)).getDescripe());
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public int getCurrentPage() {
return vpImage.getCurrentItem() + 1;
}
protected ArrayList<String> getImageList() {
return mImages;
}
protected int getTotalPageSize() {
return mImages != null ? mImages.size() : 0;
}
class ImagePagerAdapter extends FragmentStatePagerAdapter {
private ArrayList<String> images;
public ImagePagerAdapter(FragmentManager fm) {
super(fm);
}
public void setListData(ArrayList<String> images) {
this.images = images;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Fragment getItem(int position) {
return ImageDetailFragment.newInstance(images.get(position), position, getCount(), false);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageDetailFragment f = (ImageDetailFragment) super
.instantiateItem(container, position);
return f;
}
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
}
public void onImageClick(View v) {
if (svDesc.getVisibility() == View.VISIBLE || rlTitleBar.getVisibility() == View.VISIBLE) {
svDesc.setVisibility(View.GONE);
rlTitleBar.setVisibility(View.GONE);
} else {
svDesc.setVisibility(View.VISIBLE);
rlTitleBar.setVisibility(View.VISIBLE);
}
}
public void onImageLongClick(View v) {
boolean isCached = false;
Integer position = (Integer) v.getTag();
if (mImages != null && position < mImages.size()) {
String image = mImages.get(position);
isCached = AppController.getInstance().getImageLoader().isCached(image, 0, 0);
}
if (!isCached) {
Toast.makeText(this, "保存图片未加载成功!", Toast.LENGTH_LONG).show();
return;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}