package com.aiyou.viewLargeImage; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.aiyou.BaseActivity; import com.aiyou.R; import com.aiyou.utils.SwitchManager; import com.aiyou.utils.share.ShareTask; import com.aiyou.utils.share.ShareTask.ShareListener; import external.otherview.Win8ProgressBar; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.TextView; /** * 查看大图 * * @author sollian */ public class ViewLargeImageActivity extends BaseActivity implements ViewPager.OnPageChangeListener { public static final String KEY_NEWS = "news"; public static final String KEY_CUR_SEL = "current_selected"; public static final String KEY_URL_LIST = "url_list"; private boolean mFlag = false; /** * 保存图片地址的list,用户展示大图时能够切换 */ private List<String> mUrlList = new ArrayList<>(); /** * 控件 */ private FrameLayout mTitleFL; // 进度条 private FrameLayout mProgressFLayout; private Win8ProgressBar mProgressBar; private TextView mTitleTV; private Button mDynamicBtn; private ViewPager mViewPager; private MyPagerAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (SwitchManager.getInstance(getBaseContext()).isNightModeEnabled()) { // 夜间模式 this.setTheme(R.style.ThemeNight); } else { // 日间模式 this.setTheme(R.style.ThemeDay); } setContentView(R.layout.activity_view_large_image); int curSel; if (null == savedInstanceState) { Intent intent = getIntent(); @SuppressWarnings("unchecked") List<String> tempList = (ArrayList<String>) intent .getSerializableExtra(KEY_URL_LIST); if (tempList == null || tempList.isEmpty()) { selfFinish(null); return; } mUrlList.clear(); mUrlList.addAll(tempList); curSel = Integer.parseInt(intent.getStringExtra(KEY_CUR_SEL)); mFlag = intent.getBooleanExtra(KEY_NEWS, false); init(mFlag); } else { mFlag = savedInstanceState.getBoolean(KEY_NEWS, false); init(mFlag); String list = savedInstanceState.getString(KEY_URL_LIST); String arr[] = new String[0]; if (list != null) { arr = list.split(","); } mUrlList.clear(); mUrlList.addAll(Arrays.asList(arr)); curSel = Integer .parseInt(savedInstanceState.getString(KEY_CUR_SEL)); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { mTitleFL.setVisibility(View.GONE); ((FrameLayout.LayoutParams) mViewPager.getLayoutParams()).topMargin = 0; } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { mTitleFL.setVisibility(View.VISIBLE); } } if (curSel < 0 || curSel >= mUrlList.size()) { selfFinish(null); } setSelTitle(curSel + 1); final int cs = curSel; mAdapter = new MyPagerAdapter(getSupportFragmentManager(), mUrlList); mViewPager.setAdapter(mAdapter); mViewPager.setCurrentItem(cs); } private void init(boolean flag) { mTitleFL = (FrameLayout) findViewById(R.id.fl_title); /** * 进度条 */ mProgressFLayout = (FrameLayout) findViewById(R.id.activity_view_large_image_fl_progress); mProgressBar = (Win8ProgressBar) findViewById(R.id.progress_bar); mTitleTV = (TextView) findViewById(R.id.activity_view_large_image_tv_title); mDynamicBtn = (Button) findViewById(R.id.activity_view_large_image_bt); mViewPager = (ViewPager) findViewById(R.id.activity_view_large_image_vp); mViewPager.setOnPageChangeListener(this); if (flag && !SwitchManager.getInstance(getBaseContext()) .isNightModeEnabled()) { mTitleTV.setBackgroundColor(Color.parseColor("#aae46600")); mDynamicBtn .setBackgroundResource(R.drawable.background_large_image_orange); } } public void onClick(View view) { if (view == mDynamicBtn) { // 查看大图->动图|静图切换 if (mDynamicBtn.getText().equals( getBaseContext().getResources().getString( R.string.dynamic_bmp))) { mDynamicBtn.setText("返回"); mAdapter.showDynamic(); } else { mDynamicBtn.setText(R.string.dynamic_bmp); mAdapter.showStill(); } } } public void onShare(View view) { // 分享 String urlImg = mUrlList.get(mViewPager.getCurrentItem()); if (null != urlImg) { int index = urlImg.indexOf("+") + 1; urlImg = urlImg.substring(index); } ShareTask task = new ShareTask(ViewLargeImageActivity.this, urlImg, new ShareListener() { @Override public void onShareStart() { showProgress(true); } @Override public void onShareFinish(Boolean success) { showProgress(false); } }); task.execute(); } /** * 左上角返回按钮 */ public void selfFinish(View view) { scrollToFinishActivity(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 按下键盘上返回按钮 if (keyCode == KeyEvent.KEYCODE_BACK) { selfFinish(null); return true; } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); mUrlList.clear(); mUrlList = null; } @Override public void onSaveInstanceState(Bundle outState) {// 记录旧状态 super.onSaveInstanceState(outState); // 保存tag outState.putString(KEY_CUR_SEL, mViewPager.getCurrentItem() + ""); // 保存list StringBuilder sb = new StringBuilder(); int size = mUrlList.size(); for (int i = 0; i < size; i++) { if (i < size - 1) { sb.append(mUrlList.get(i)).append(","); } else { sb.append(mUrlList.get(i)); } } outState.putString(KEY_URL_LIST, sb.toString()); // 保存flag outState.putBoolean(KEY_NEWS, mFlag); } /** * 设置cpb_progress的状态和是否显示 * * @param flag */ private void showProgress(boolean flag) { if (flag) { mProgressFLayout.setVisibility(View.VISIBLE); mProgressBar.start(); } else { mProgressFLayout.setVisibility(View.GONE); mProgressBar.stop(); } } private void setSelTitle(int select) { mTitleTV.setText("查看大图 " + select + "/" + mUrlList.size()); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { setSelTitle(position + 1); } @Override public void onPageScrollStateChanged(int state) { } }