Files
HouseProperty/ninegridview/src/main/java/com/lzy/ninegrid/preview/NineGridViewClickAdapter.java
jinyuer fda8305a13 1
2020-08-14 17:07:43 +08:00

86 lines
3.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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) {
if (imageInfo.get(index).type == 2) {
Intent intent = new Intent(context, VideoPreviewActivity.class);
intent.putExtra("url", imageInfo.get(index).bigImageUrl);
context.startActivity(intent);
}else {
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;
}
}