package com.luckymonkey.ui.image; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader.ImageContainer; import com.android.volley.toolbox.ImageLoader.ImageListener; import com.luckymonkey.AppController; import com.luckymonkey.R; import com.luckymonkey.util.UiHelper; import com.luckymonkey.widget.ZoomableImageView; import com.luckymonkey.widget.ZoomableImageView.OnSingleClickListener; public class ImageDetailFragment extends Fragment { private static final String IMAGE_EXTRA = "image_extra"; private String imageUrl; public ZoomableImageView imageView; int img_position = 0, img_count = 0; private Bundle arguments; private int mDisplayWidth; private int mDisplayHeight; private boolean savable = false; public static ImageDetailFragment newInstance(String imageUrl, int position, int count, boolean savable) { final ImageDetailFragment f = new ImageDetailFragment(); final Bundle args = new Bundle(); args.putSerializable(IMAGE_EXTRA, imageUrl); args.putInt("pos", position); args.putInt("count", count); args.putBoolean("savable", savable); f.setArguments(args); return f; } public ImageDetailFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); arguments = getArguments(); if (arguments != null) { imageUrl = arguments.getString(IMAGE_EXTRA); img_position = arguments.getInt("pos"); img_count = arguments.getInt("count"); savable = arguments.getBoolean("savable"); } DisplayMetrics displayMetrics = UiHelper.getDisplayMetrics(getActivity()); mDisplayWidth = displayMetrics.widthPixels; mDisplayHeight = displayMetrics.heightPixels; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View convertView = inflater.inflate(R.layout.fragment_image_detail, container, false); imageView = (ZoomableImageView) convertView.findViewById(R.id.image); imageView.setTag(img_position); imageView.setPos(img_position, img_count); imageView.setOnSingleClickListener(new OnSingleClickListener() { @Override public boolean onSingleClick(MotionEvent e) { FragmentActivity activity = getActivity(); if (activity != null && !activity.isFinishing()) { ((BrowseImageActivity)activity).onImageClick(imageView); } return false; } @Override public boolean onLongClick(MotionEvent e) { FragmentActivity activity = getActivity(); if (savable && activity != null && !activity.isFinishing()) { ((BrowseImageActivity)getActivity()).onImageLongClick(imageView); } return false; } }); final View spinner = convertView.findViewById(R.id.loading); String imgUrl = imageUrl; if (!TextUtils.isEmpty(imgUrl)) { spinner.setVisibility(View.VISIBLE); AppController.getInstance().getImageLoader().get(imgUrl, new ImageListener() { @Override public void onErrorResponse(VolleyError error) { spinner.setVisibility(View.GONE); } @Override public void onResponse(ImageContainer response, boolean isImmediate) { Bitmap bitmap = response.getBitmap(); if (bitmap != null) { spinner.setVisibility(View.GONE); imageView.setImageBitmap(bitmap); } } }); } else { spinner.setVisibility(View.GONE); } return convertView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } }