package com.roboo.like.netease.fragment;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.util.LruCache;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader.ImageCache;
import com.android.volley.toolbox.Volley;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.roboo.like.netease.R;
import com.roboo.like.netease.listener.MulitPointTouchListener;
public class ShowImageFragment extends Fragment
{
private static final String ARG_IMAGE_URL = "arg_image_url";
private ImageLoader mImageLoader = ImageLoader.getInstance();
private com.android.volley.toolbox.ImageLoader mVolleyImageLoader;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mImageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
RequestQueue queue = Volley.newRequestQueue(getActivity());
ImageCache imageCache = new ImageCacheImpl();
mVolleyImageLoader = new com.android.volley.toolbox.ImageLoader(queue, imageCache);
}
public static ShowImageFragment newInstance(String imageUrl)
{
ShowImageFragment fragment = new ShowImageFragment();
Bundle bundle = new Bundle();
bundle.putString(ARG_IMAGE_URL, imageUrl);
fragment.setArguments(bundle);
return fragment;
}
@SuppressLint("NewApi")
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
String imageUrl = getArguments().getString(ARG_IMAGE_URL);
View view = inflater.inflate(R.layout.fragment_show_image_imageview, null);
final ImageView imageView = (ImageView) view.findViewById(R.id.iv_image);
System.out.println("imageUrl = " + imageUrl);
if (null != imageUrl)
{
// mImageLoader.displayImage(imageUrl, imageView);
if (mVolleyImageLoader.isCached(imageUrl, 0, 0))
{
System.out.println("图片已经缓存 :: " + imageUrl);
}
mVolleyImageLoader.get(imageUrl, com.android.volley.toolbox.ImageLoader.getImageListener(imageView, R.drawable.ic_stub, R.drawable.ic_error));
}
imageView.setOnTouchListener(new MulitPointTouchListener(imageView));
imageView.setOnClickListener(new OnClickListener()
{
@SuppressLint("NewApi")
@Override
public void onClick(View v)
{
if (getActivity().getActionBar().getCustomView().getVisibility() == View.VISIBLE)
{
getActivity().getActionBar().getCustomView().setVisibility(View.GONE);
getActivity().getActionBar().hide();
}
else
{
getActivity().getActionBar().show();
getActivity().getActionBar().getCustomView().setVisibility(View.VISIBLE);
}
ObjectAnimator translationRight = ObjectAnimator.ofFloat(imageView, "X", imageView.getWidth());
ObjectAnimator translationLeft = ObjectAnimator.ofFloat(imageView, "X", 0f);
ObjectAnimator translationDown = ObjectAnimator.ofFloat(imageView, "Y",
imageView.getHeight());
ObjectAnimator translationUp = ObjectAnimator.ofFloat(imageView, "Y", 0);
AnimatorSet as = new AnimatorSet();
as.play(translationRight).before(translationLeft);
as.play(translationRight).with(translationDown);
as.play(translationLeft).with(translationUp);
// 和上边四句等效,另一种写法
/*
AnimatorSet as = new AnimatorSet();
as.playTogether(translationRight, translationDown);
as.playSequentially(translationRight, translationLeft);
as.playTogether(translationLeft, translationUp);
*/
as.setDuration(1500);
as.start();
}
});
return view;
}
private class ImageCacheImpl implements ImageCache
{
private static final int MAX_CACHE_SIZE = 10 * 1024 * 1024;
private LruCache<String, Bitmap> mLruCache = new LruCache<String, Bitmap>(MAX_CACHE_SIZE);
@Override
public Bitmap getBitmap(String url)
{
return mLruCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap)
{
mLruCache.put(url, bitmap);
}
}
}