package com.metis.coursepart.activity; import android.animation.ObjectAnimator; import android.app.DownloadManager; import android.content.Context; import android.os.Environment; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.HttpHandler; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.metis.base.activity.TitleBarActivity; import com.metis.base.fragment.MultiImagePreviewFragment; import com.metis.base.manager.DisplayManager; import com.metis.base.module.User; import com.metis.base.utils.FileUtils; import com.metis.base.widget.ImagePreviewable; import com.metis.base.widget.ProfileNameView; import com.metis.base.widget.TitleBar; import com.metis.coursepart.R; import com.metis.coursepart.module.GalleryItem; import com.metis.coursepart.module.KeyWord; import java.io.File; import java.io.IOException; public class GalleryItemDetailActivity extends TitleBarActivity implements MultiImagePreviewFragment.OnImageOperateListener, View.OnClickListener{ private static final String TAG = GalleryItemDetailActivity.class.getSimpleName(); private ProfileNameView mProfileNameView = null; private MultiImagePreviewFragment mPreviewFragment = null; private LinearLayout mDetailLayout, mDetailTagContainer; private TextView mDetailInfoTv, mDetailSaveBtn, mViewCountTv; private GalleryItem mCurrentItem = null; private HttpHandler<File> mDownloadHandler = null; private boolean isDetailVisible = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery_item_detail); mPreviewFragment = (MultiImagePreviewFragment)getSupportFragmentManager().findFragmentById(R.id.detail_multi_image_fragment); mDetailLayout = (LinearLayout)findViewById(R.id.item_detail_panel); mDetailTagContainer = (LinearLayout)findViewById(R.id.item_detail_tag_container); mDetailInfoTv = (TextView)findViewById(R.id.item_detail_info); mDetailSaveBtn = (TextView)findViewById(R.id.item_detail_save_btn); mViewCountTv = (TextView)findViewById(R.id.item_detail_read_count); mDetailSaveBtn.setOnClickListener(this); mProfileNameView = new ProfileNameView(this); getTitleBar().setCenterView(mProfileNameView); mPreviewFragment.setOnOperateListener(this); } @Override protected void onDestroy() { super.onDestroy(); } @Override public boolean isTitleBarOverlay() { return true; } @Override public boolean showAsUpEnable() { return true; } @Override public void onPageChange(int position, ImagePreviewable image) { if (image instanceof GalleryItem) { mCurrentItem = (GalleryItem)image; User info = mCurrentItem.studio; if (info != null) { mProfileNameView.setProfile(info.getAvailableAvatar(), DisplayManager.getInstance(this).makeRoundDisplayImageOptions(getResources().getDimensionPixelSize(R.dimen.gallery_title_profile_size))); mProfileNameView.setName(info.name); } else { mProfileNameView.setProfile(null); mProfileNameView.setName(""); if (!TextUtils.isEmpty(mCurrentItem.source)) { mProfileNameView.setName(mCurrentItem.source); } } mDetailInfoTv.setText(mCurrentItem.descripiton); mViewCountTv.setText(getString(R.string.gallery_read_count, mCurrentItem.viewCount)); KeyWord[] keyWordList = mCurrentItem.keyWordList; if (keyWordList != null/* && !keyWordList.isEmpty()*/) { final int length = keyWordList.length; mDetailTagContainer.removeAllViews(); for (int i = 0; i < length; i++) { View child = LayoutInflater.from(this).inflate(R.layout.layout_tag_item, null); TextView tagTv = (TextView)child.findViewById(R.id.tag_name); KeyWord keyWord = keyWordList[i]; if (keyWord != null) { tagTv.setText(keyWord.keyWordName); mDetailTagContainer.addView(child); } } } } } @Override public void onPageTab(int position, ImagePreviewable image) { if (isDetailVisible) { hideDetail(); } else { showDetail(); } } @Override public void onPageLongClick(int position, ImagePreviewable image, File cacheFile) { } private void hideDetail () { TitleBar titleBar = getTitleBar(); if (titleBar.getTranslationY() == 0) { ObjectAnimator titleBarAnimator = ObjectAnimator.ofFloat(titleBar, "translationY", 0, -titleBar.getHeight()); titleBarAnimator.start(); } ObjectAnimator animator = ObjectAnimator.ofFloat(mDetailLayout, "translationY", 0, mDetailLayout.getHeight()); animator.start(); isDetailVisible = false; } private void showDetail () { TitleBar titleBar = getTitleBar(); if (titleBar.getTranslationY() == -titleBar.getHeight()) { ObjectAnimator titleBarAnimator = ObjectAnimator.ofFloat(titleBar, "translationY", -titleBar.getHeight(), 0); titleBarAnimator.start(); } ObjectAnimator animator = ObjectAnimator.ofFloat(mDetailLayout, "translationY", mDetailLayout.getHeight(), 0); animator.start(); isDetailVisible = true; } @Override public void onClick(View v) { if (v.getId() == mDetailSaveBtn.getId()) { save(mCurrentItem); } } private void save (GalleryItem item) { File mCacheFile = mPreviewFragment.getCurrentImageFile(); File dest = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), mCacheFile.getName()); if (mCacheFile != null && mCacheFile.exists()) { if (dest != null) { try { boolean success = FileUtils.copyFileTo(mCacheFile, dest); if (success) { onSaveSuccess(dest); } else { onSaveFailed(); } } catch (IOException e) { e.printStackTrace(); onSaveFailed(); } } } else { HttpUtils httpUtils = new HttpUtils(10 * 1000); mDownloadHandler = httpUtils.download(item.getUrl(), dest.getAbsolutePath(), true, true, new RequestCallBack<File>() { @Override public void onSuccess(ResponseInfo<File> responseInfo) { onSaveSuccess(responseInfo.result); } @Override public void onFailure(HttpException e, String s) { onSaveFailed(); } }); } } private void onSaveSuccess (File dest) { Toast.makeText(this, getString(R.string.gallery_save_to, dest.getAbsolutePath()), Toast.LENGTH_SHORT).show(); DownloadManager downloadManager = (DownloadManager)this.getSystemService(Context.DOWNLOAD_SERVICE); downloadManager.addCompletedDownload(dest.getName(), dest.getAbsolutePath(), true, "image/*", dest.getAbsolutePath(), dest.length(), true); } private void onSaveFailed () { Toast.makeText(this, R.string.gallery_save_failed, Toast.LENGTH_SHORT).show(); } /*@Override public void onPageSelected(int position) { GalleryItem galleryItem = GalleryCacheManager.getInstance(this).getGalleryItem(mTag, position); ((CourseGalleryItemFragment) mAdapter.getItem(position)).setGalleryItem(galleryItem); final StudioInfo studioInfo = galleryItem.studio; if (studioInfo != null) { mProfileNameView.setName(studioInfo.name); mProfileNameView.setProfile(studioInfo.avatar, DisplayManager.getInstance(this).makeRoundDisplayImageOptions(getResources().getDimensionPixelSize(R.dimen.gallery_title_profile_size))); mProfileNameView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { com.metis.base.ActivityDispatcher.userActivity(GalleryItemDetailActivity.this, studioInfo.userId); } }); } else { mProfileNameView.setName(null); mProfileNameView.setProfile(null); mProfileNameView.setOnClickListener(null); } }*/ }