package com.lzy.ninegrid.preview; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.lzy.ninegrid.ImageInfo; import com.lzy.ninegrid.NineGridView; import com.lzy.ninegrid.NineGridViewAdapter; import java.io.Serializable; import java.util.List; /** * ================================================ * 作 者:廖子尧 * 版 本:1.0 * 创建日期:2016/3/21 * 描 述: * 修订历史: * ================================================ */ public class NineGridViewClickAdapter extends NineGridViewAdapter { private int statusHeight; public NineGridViewClickAdapter(Context context, List<ImageInfo> imageInfo) { super(context, imageInfo); statusHeight = getStatusHeight(context); } @Override protected void onImageItemClick(Context context, NineGridView nineGridView, int index, List<ImageInfo> imageInfo) { for (int i = 0; i < imageInfo.size(); i++) { ImageInfo info = imageInfo.get(i); View imageView; if (i < nineGridView.getMaxSize()) { imageView = nineGridView.getChildAt(i); } else { //如果图片的数量大于显示的数量,则超过部分的返回动画统一退回到最后一个图片的位置 imageView = nineGridView.getChildAt(nineGridView.getMaxSize() - 1); } info.imageViewWidth = imageView.getWidth(); info.imageViewHeight = imageView.getHeight(); int[] points = new int[2]; imageView.getLocationInWindow(points); info.imageViewX = points[0]; info.imageViewY = points[1] - statusHeight; } Intent intent = new Intent(context, ImagePreviewActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable(ImagePreviewActivity.IMAGE_INFO, (Serializable) imageInfo); bundle.putInt(ImagePreviewActivity.CURRENT_ITEM, index); intent.putExtras(bundle); context.startActivity(intent); ((Activity) context).overridePendingTransition(0, 0); } /** * 获得状态栏的高度 */ public int getStatusHeight(Context context) { int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int height = Integer.parseInt(clazz.getField("status_bar_height").get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } }