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.View; import android.view.ViewGroup; import android.widget.TextView; 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.ABaseFragment; 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.bean.PhotosBean; import org.aisen.weibo.sina.support.utils.UMengUtil; import org.aisen.weibo.sina.ui.fragment.comment.TimelineDetailPagerFragment; import org.aisen.weibo.sina.ui.fragment.picture.PictureFragment; import org.aisen.weibo.sina.ui.fragment.profile.PhotosFragment; /** * 相册 * * @author Jeff.Wang * * @date 2014年11月6日 */ public class PhotosActivity extends BaseActivity implements OnPageChangeListener { public static void launch(ABaseFragment from, int index, int requestCode) { Intent intent = new Intent(from.getActivity(), PhotosActivity.class); intent.putExtra("index", index); from.startActivityForResult(intent, requestCode); } @ViewInject(id = R.id.viewPager) ViewPager viewPager; @ViewInject(id = R.id.layStatus, click = "launchStatus") View layStatus; @ViewInject(id = R.id.viewStatus) View viewStatus; @ViewInject(id = R.id.txtStatus, click = "launchStatus") TextView txtStatus; @ViewInject(id = R.id.layToolbar) ViewGroup layToolbar; private PhotosBean mBean; private int index; MyViewPagerAdapter myViewPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ui_picture_pager); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } mBean = savedInstanceState == null ? PhotosFragment.photos : (PhotosBean) savedInstanceState.getSerializable("bean"); index = savedInstanceState == null ? getIntent().getIntExtra("index", 0) : savedInstanceState.getInt("index", 0); myViewPagerAdapter = new MyViewPagerAdapter(getFragmentManager()); viewPager.setAdapter(myViewPagerAdapter); viewPager.setCurrentItem(index); viewPager.setOnPageChangeListener(this); if (size() > 1 && getSupportActionBar() != null) getSupportActionBar().setTitle(String.format("%d/%d", index + 1, size())); layStatus.setVisibility(View.VISIBLE); viewStatus.setVisibility(View.VISIBLE); txtStatus.setText(getStatus(index).getText()); if (Build.VERSION.SDK_INT >= 19) { layToolbar.setPadding(0, layToolbar.getPaddingTop() + SystemUtils.getStatusBarHeight(this), 0, 0); if (SystemUtils.hasNavigationBar(this)) { layStatus.setPadding(0, 0, 0, SystemUtils.getNavigationBarHeight(this)); } } getToolbar().setBackgroundColor(Color.TRANSPARENT); } @Override protected int configTheme() { return R.style.AppTheme_Pics; } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("index", index); outState.putSerializable("bean", mBean); } private int size() { return mBean.getList().size(); } private PicUrls getPicture(int index) { return mBean.getList().get(index).getPhoto(); } public PicUrls getCurrent() { return getPicture(viewPager.getCurrentItem()); } private StatusContent getStatus(int index) { return mBean.getList().get(index).getStatus(); } void launchStatus(View v) { TimelineDetailPagerFragment.launch(this, getStatus(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; txtStatus.setText(getStatus(index).getText()); if (getSupportActionBar() != null) getSupportActionBar().setTitle(String.format("%d/%d", index + 1, size())); PictureFragment fragment = (PictureFragment) myViewPagerAdapter.getItem(index); if (fragment != null) fragment.onTabRequestData(); Intent data = new Intent(); data.putExtra("index", viewPager.getCurrentItem()); setResult(Activity.RESULT_OK, data); } @Override public void onResume() { super.onResume(); UMengUtil.onPageStart(this, "相册预览页"); } @Override public void onPause() { super.onPause(); UMengUtil.onPageEnd(this, "相册预览页"); } }