package org.aisen.weibo.sina.ui.activity.picture;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.ViewGroup;
import org.aisen.android.common.utils.KeyGenerator;
import org.aisen.android.common.utils.SystemUtils;
import org.aisen.android.support.inject.ViewInject;
import org.aisen.android.ui.activity.basic.BaseActivity;
import org.aisen.android.ui.fragment.adapter.FragmentPagerAdapter;
import org.aisen.weibo.sina.R;
import org.aisen.weibo.sina.sinasdk.bean.PicUrls;
import org.aisen.weibo.sina.sinasdk.bean.StatusContent;
import org.aisen.weibo.sina.support.utils.UMengUtil;
import org.aisen.weibo.sina.ui.fragment.picture.PictureFragment;
public class PicsActivity extends BaseActivity implements OnPageChangeListener {
public static void launch(Activity from, StatusContent bean, int index) {
Intent intent = new Intent(from, PicsActivity.class);
intent.putExtra("bean", bean);
intent.putExtra("index", index);
from.startActivity(intent);
}
@ViewInject(id = R.id.viewPager)
ViewPager viewPager;
@ViewInject(id = R.id.layToolbar)
ViewGroup layToolbar;
private StatusContent mBean;
private int index;
MyViewPagerAdapter myViewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_pictures);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mBean = savedInstanceState == null ? (StatusContent) getIntent().getSerializableExtra("bean")
: (StatusContent) savedInstanceState.getSerializable("bean");
index = savedInstanceState == null ? getIntent().getIntExtra("index", 0)
: savedInstanceState.getInt("index", 0);
myViewPagerAdapter = new MyViewPagerAdapter(getFragmentManager());
viewPager.setAdapter(myViewPagerAdapter);
viewPager.setOnPageChangeListener(this);
viewPager.setCurrentItem(index);
if (size() > 1 && getSupportActionBar() != null)
getSupportActionBar().setTitle(String.format("%d/%d", index + 1, size()));
else if (getSupportActionBar() != null)
getSupportActionBar().setTitle(String.format("%d/%d", 1, 1));
getToolbar().setBackgroundColor(Color.TRANSPARENT);
if (Build.VERSION.SDK_INT >= 19) {
layToolbar.setPadding(layToolbar.getPaddingLeft(),
layToolbar.getPaddingTop() + SystemUtils.getStatusBarHeight(this),
layToolbar.getPaddingRight(),
layToolbar.getPaddingBottom());
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("index", index);
outState.putSerializable("bean", mBean);
}
private int size() {
if (mBean.getRetweeted_status() != null) {
return mBean.getPic_urls().length;
}
return mBean.getPic_urls().length;
}
private PicUrls getPicture(int index) {
if (mBean.getRetweeted_status() != null) {
return mBean.getPic_urls()[index];
}
return mBean.getPic_urls()[index];
}
public PicUrls getCurrent() {
return getPicture(viewPager.getCurrentItem());
}
protected Fragment newFragment(int position) {
return PictureFragment.newInstance(getPicture(position));
}
class MyViewPagerAdapter extends FragmentPagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = getFragmentManager().findFragmentByTag(makeFragmentName(position));
if (fragment == null) {
fragment = newFragment(position);
}
return fragment;
}
@Override
public int getCount() {
return size();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
Fragment fragment = getFragmentManager().findFragmentByTag(makeFragmentName(position));
if (fragment != null)
mCurTransaction.remove(fragment);
}
@Override
protected String makeFragmentName(int position) {
return KeyGenerator.generateMD5(getPicture(position).getThumbnail_pic());
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int index) {
this.index = index;
getSupportActionBar().setTitle(String.format("%d/%d", index + 1, size()));
PictureFragment fragment = (PictureFragment) myViewPagerAdapter.getItem(index);
if (fragment != null)
fragment.onTabRequestData();
}
@Override
protected int configTheme() {
return R.style.AppTheme_Pics;
}
@Override
public void onResume() {
super.onResume();
UMengUtil.onPageStart(this, "图片预览页");
}
@Override
public void onPause() {
super.onPause();
UMengUtil.onPageEnd(this, "图片预览页");
}
}