package org.aisen.weibo.sina.ui.activity.picture; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.support.utils.BaiduAnalyzeUtils; import org.aisen.weibo.sina.ui.fragment.picture.PictureFragment; import org.sina.android.bean.PicUrls; import org.sina.android.bean.StatusContent; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.ViewGroup; import com.m.common.utils.KeyGenerator; import com.m.support.Inject.ViewInject; import com.m.support.adapter.FragmentPagerAdapter; import com.m.ui.activity.BaseActivity; 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; private StatusContent mBean; private int index; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ui_pics); getActionBar().setTitle(R.string.title_pic); getActionBar().setDisplayShowHomeEnabled(false); getActionBar().setDisplayHomeAsUpEnabled(true); mBean = savedInstanceState == null ? (StatusContent) getIntent().getSerializableExtra("bean") : (StatusContent) savedInstanceState.getSerializable("bean"); index = savedInstanceState == null ? getIntent().getIntExtra("index", 0) : savedInstanceState.getInt("index", 0); viewPager.setAdapter(new MyViewPagerAdapter(getFragmentManager())); viewPager.setOnPageChangeListener(this); viewPager.setCurrentItem(index); if (size() > 1) getActionBar().setSubtitle(String.format("%d/%d", index + 1, size())); } @Override protected int configTheme() { return R.style.PictureTheme; } @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]; } 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; getActionBar().setSubtitle(String.format("%d/%d", index + 1, size())); } @Override protected void onResume() { super.onResume(); BaiduAnalyzeUtils.onPageStart("查看图片"); } @Override protected void onPause() { super.onPause(); BaiduAnalyzeUtils.onPageEnd("查看图片"); } }