AlbumFragment
package com.meetdilse.store.ui.fragment;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.meetdilse.store.R;
import com.meetdilse.store.base.BaseFragment;
import com.meetdilse.store.base.OkHttp;
import com.meetdilse.store.data.DiscoverAlbum;
import com.meetdilse.store.data.DiscoverMovie;
import com.meetdilse.store.photoview.TestImageLoader;
import com.meetdilse.store.photoview.UserViewInfo;
import com.meetdilse.store.ui.adapter.DiscoverAlbumAdpter;
import com.previewlibrary.GPreviewBuilder;
import com.previewlibrary.ZoomMediaLoader;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import java.util.ArrayList;
import java.util.List;
public class AlbumFragment extends BaseFragment {
private GridView mGridView;
private int mPage;
private DiscoverAlbumAdpter discoverAlbumAdpter;
private int mPhotoId;
private GridView mGrid;
private List<UserViewInfo> mThumbViewInfoList;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_album,container,false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ZoomMediaLoader.getInstance().init(new TestImageLoader());
mGridView=view.findViewById(R.id.gv_album);
mGrid=mGridView;
discoverAlbumAdpter=new DiscoverAlbumAdpter(getActivity());
mGrid.setAdapter(discoverAlbumAdpter);
mThumbViewInfoList = new ArrayList<UserViewInfo>();
OkHttp.create(this).buyPhoto(mPhotoId).enqueue((call, httpRes) -> {
Log.v("buyvideo", httpRes.toString());
});
OkHttp.create(this).getHotPhotoList(1).enqueue((call,httpRes)->{
Log.v("getHotPhotoList",httpRes.toString());
if (httpRes.isSuccessful()){
List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
discoverAlbumAdpter.addAll(data);
for (DiscoverAlbum datum : data) {
mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));
Log.v("datum.getUinfo()",datum.getUinfo().getAvatar());
}
}
});
RefreshLayout refreshLayout =view.findViewById(R.id.refreshLayout);//绑定那个刷新的布局
refreshLayout.setOnRefreshListener(this::onRefresh);//设置下拉监听,当下拉的时候调用函数
refreshLayout.setOnLoadMoreListener(this::onLoadMore);//设置上拉监听,当上拉时候调用函数
//设置监听,点击item查看图片
mGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// DiscoverAlbum item=discoverAlbumAdpter.getItem(i);
// mPhotoId =item.getId();
// Log.v("mVideoId", String.valueOf(mPhotoId));
GPreviewBuilder.from(AlbumFragment.this)
.setData(mThumbViewInfoList)
.setCurrentIndex(i)
.setType(GPreviewBuilder.IndicatorType.Number)
.start();
}
});
}
private void onRefresh(@NonNull RefreshLayout refreshLayout) {
mPage = 1;
OkHttp.create().getHotPhotoList(mPage).enqueue((call, httpRes)->{
if (httpRes.isSuccessful()){
List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
discoverAlbumAdpter.addAll(data);
for (DiscoverAlbum datum : data) {
mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));//下拉刷新或者上拉加载都要再次添加图片,用来浏览的
}
}
refreshLayout.finishRefresh();
});
}
private void onLoadMore(@NonNull RefreshLayout refreshlayout) {
mPage++;
OkHttp.create().getHotPhotoList(mPage).enqueue((call, httpRes)->{
if (httpRes.isSuccessful()){
List<DiscoverAlbum> data=httpRes.dataFromList(DiscoverAlbum.class);
if (data.size()==0) {
refreshlayout.finishLoadMoreWithNoMoreData();
}else {
for (DiscoverAlbum datum : data) {
mThumbViewInfoList.add(new UserViewInfo(datum.getUinfo().getAvatar()));
}
discoverAlbumAdpter.addAll(data);
}
refreshlayout.finishLoadMore();
}
});
}
/**
* 查找信息
* 从第一个完整可见item逆序遍历,如果初始位置为0,则不执行方法内循环
*/
private void computeBoundsBackward(int firstCompletelyVisiblePos) {
for (int i = firstCompletelyVisiblePos; i < mThumbViewInfoList.size(); i++) {
View itemView = mGrid.getChildAt(i - firstCompletelyVisiblePos);
Rect bounds = new Rect();
if (itemView != null) {
// //需要显示过度控件
// ImageView thumbView = (ImageView) itemView.findViewById(R.id.iv_al);
// //拿到在控件屏幕可见中控件显示为矩形Rect信息
// thumbView.getGlobalVisibleRect(bounds);
}
mThumbViewInfoList.get(i).setBounds(bounds);
}
}
}
下面这个就是设置监听了
//设置监听,点击item查看图片
mGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// DiscoverAlbum item=discoverAlbumAdpter.getItem(i);
// mPhotoId =item.getId();
// Log.v("mVideoId", String.valueOf(mPhotoId));
GPreviewBuilder.from(AlbumFragment.this)
.setData(mThumbViewInfoList)
.setCurrentIndex(i)
.setType(GPreviewBuilder.IndicatorType.Number)
.start();
}
});