/*
* Copyright 2016. SHENQINCI(沈钦赐)<dev@qinc.me>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ren.qinc.markdowneditors.view;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.view.ViewCompat;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextSwitcher;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import butterknife.Bind;
import ren.qinc.markdowneditors.R;
import ren.qinc.markdowneditors.base.BaseToolbarActivity;
/**
* 单张图片查看(待使用)
* The type Common image details activity.
* Created by 沈钦赐 on 2015/12/20.
*/
public class CommonImageDetailsActivity extends BaseToolbarActivity {
public static final String EXTRA_IMAGE_URL = "image_url";
public static final String EXTRA_IMAGE_TITLE = "image_title";
public static final String TRANSIT_PIC = "picture";
protected static ImageView imageView;
@Bind(R.id.tv_title)
protected TextSwitcher textSwitcher;
String imageUrl, title;
/**
* Show image.
*
* @param context the context
* @param imageUrl the image url
*/
public static void showImage(Context context, @NonNull String imageUrl) {
if (context == null) return;
showImage(context, imageView, imageUrl, null);
}
/**
* Show image.
*
* @param context the context
* @param imageUrl the image url
* @param title the title
*/
public static void showImage(Context context, @NonNull String imageUrl, String title) {
if (context == null) return;
showImage(context, imageView, imageUrl, title);
}
/**
* Show image.
*
* @param context the context activity的context
* @param sharedElement the shared element
* @param imageUrl the image url 图片url
* @param title the title 标题 可为null
*/
public static void showImage(Context context, View sharedElement, @NonNull String imageUrl, @Nullable String title) {
if (context == null) return;
Intent intent = new Intent(context, CommonImageDetailsActivity.class);
intent.putExtra(CommonImageDetailsActivity.EXTRA_IMAGE_URL, imageUrl);
intent.putExtra(CommonImageDetailsActivity.EXTRA_IMAGE_TITLE, title);
if (context instanceof Activity && sharedElement != null) {
ActivityOptionsCompat optionsCompat
= ActivityOptionsCompat.makeSceneTransitionAnimation(
(Activity) context, sharedElement, CommonImageDetailsActivity.TRANSIT_PIC);
try {
ActivityCompat.startActivity((Activity) context, intent,
optionsCompat.toBundle());
//界面共享该图片元素
} catch (IllegalArgumentException e) {
context.startActivity(intent);//如果异常 直接启动
}
} else {
context.startActivity(intent);//如果异常 直接启动
}
}
public static Intent newIntent(Context context, String url, String title) {
Intent intent = new Intent(context, CommonImageDetailsActivity.class);
intent.putExtra(CommonImageDetailsActivity.EXTRA_IMAGE_URL, url);
intent.putExtra(CommonImageDetailsActivity.EXTRA_IMAGE_TITLE, title);
return intent;
}
@Override
public void onCreateAfter(Bundle savedInstanceState) {
imageView = (ImageView) findViewById(R.id.picture);
imageView.setOnClickListener(this::switchover);
parseIntent();
// init image view
ViewCompat.setTransitionName(imageView, TRANSIT_PIC);//activity共享元素,有动画效果
Glide.with(mContext)
.load(imageUrl).placeholder(R.drawable.ic_null)
.diskCacheStrategy(DiskCacheStrategy.ALL)//缓存原始尺寸和其他尺寸
.into(imageView);
// Glide.with(context)
// .load(imageUrl)
// .asBitmap()
// .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存原始尺寸和其他尺寸
// .into(new SimpleTarget<Bitmap>() {
// @Override
// public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
//
// }
// });
// set up app bar
setAppBarAlpha(0.7f);
//init mTextSwitcher
textSwitcher.setFactory(() -> {
TextView textView = new TextView(this);
textView.setTextAppearance(this, R.style.WebTitle);
textView.setSingleLine(true);
textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
textView.postDelayed(() -> textView.setSelected(true), 1738);
return textView;
});
textSwitcher.setInAnimation(this, android.R.anim.fade_in);
textSwitcher.setOutAnimation(this, android.R.anim.fade_out);
if (title != null) setTitle(title);
}
public void switchover(View view) {
hideOrShowToolbar();
}
@Override
public int getLayoutId() {
return R.layout.activity_common_single_picture;
}
@Override
public void initData() {
}
@Override
public void setTitle(CharSequence title) {
super.setTitle(title);
textSwitcher.setText(title);
}
@Override
protected boolean hasBackButton() {
return true;
}
private void parseIntent() {
imageUrl = getIntent().getStringExtra(EXTRA_IMAGE_URL);
title = getIntent().getStringExtra(EXTRA_IMAGE_TITLE);
if (title == null && imageUrl != null) {
try {
int start = imageUrl.lastIndexOf("/");
int end = imageUrl.lastIndexOf(".");
title = imageUrl.substring(start, end);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_picture, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_share:
break;
case R.id.action_save:
saveImageToGallery();
break;
}
return super.onOptionsItemSelected(item);
}
private void saveImageToGallery() {
//保存图片
}
@Override
protected void onDestroy() {
imageView = null;
super.onDestroy();
}
}