/*
*
* * Copyright (C) 2015 Eason.Lai (easonline7@gmail.com)
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package com.redare.imagepicker.ui;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListPopupWindow;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.backends.pipeline.PipelineDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.common.ResizeOptions;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
import com.redare.imagepicker.AndroidImagePicker;
import com.redare.imagepicker.R;
import com.redare.imagepicker.Util;
import com.redare.imagepicker.bean.ImageItem;
import com.redare.imagepicker.bean.ImageSet;
import com.redare.imagepicker.data.DataSource;
import com.redare.imagepicker.data.OnImagesLoadedListener;
import com.redare.imagepicker.data.impl.LocalDataSource;
import com.redare.imagepicker.widget.SuperCheckBox;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ImagesGridFragment extends Fragment implements OnImagesLoadedListener,AndroidImagePicker.OnImageSelectedListener,AndroidImagePicker.OnImageCropCompleteListener{
private static final String TAG = ImagesGridFragment.class.getSimpleName();
Activity mContext;
GridView mGridView;
ImageGridAdapter mAdapter;
int imageGridSize;
Button btnDir;//button to change ImageSet
private View mFooterView;
private ListPopupWindow mFolderPopupWindow;//ImageSet PopupWindow
private ImageSetAdapter mImageSetAdapter;
List<ImageSet> mImageSetList;//data of all ImageSets
// ImagePresenter mImagePresenter;
AndroidImagePicker androidImagePicker;
private OnItemClickListener mOnItemClickListener;//Grid Item click Listener
private static final int ITEM_TYPE_CAMERA = 0;//the first Item may be Camera
private static final int ITEM_TYPE_NORMAL = 1;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getActivity();
androidImagePicker = AndroidImagePicker.getInstance();
//androidImagePicker.clear();
androidImagePicker.addOnImageSelectedListener(this);
androidImagePicker.addOnImageCropCompleteListener(this);
//androidImagePicker.clearSelectedImages();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View contentView = inflater.inflate(R.layout.fragment_images_grid,null);
mFooterView = contentView.findViewById(R.id.footer_panel);
imageGridSize = (mContext.getWindowManager().getDefaultDisplay().getWidth() - Util.dp2px(mContext, 2) * 2) / 3;
btnDir = (Button) contentView.findViewById(R.id.btn_dir);
mGridView = (GridView) contentView.findViewById(R.id.gridview);
/*mGridView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), false, true, new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
//int firstVisibleItem
if(scrollState == SCROLL_STATE_IDLE){
int lastPostion =view.getLastVisiblePosition();
int totalItemCount = view.getCount();
int preSize = totalItemCount - lastPostion <=6?totalItemCount - lastPostion:6;
Log.i(TAG,"=====lastVisibleItem:"+lastPostion+" preLoad:"+preSize);
for(int i = 0;i<preSize-1;i++){
String fileScheme = ImageDownloader.Scheme.FILE.wrap(mImageSetList.get(0).imageItems.get(lastPostion+i).path);
ImageSize size = new ImageSize(imageGridSize,imageGridSize);
ImageLoader.getInstance().loadImage(fileScheme, size, new ImageLoadingListener() {
@Override public void onLoadingStarted(String imageUri, View view) { }
@Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) {}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
}
@Override public void onLoadingCancelled(String imageUri, View view) { }
});
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
}));//stop loading if fling or scrolling if using UIL*/
DataSource dataSource = new LocalDataSource(mContext);
dataSource.provideMediaItems(this);//select all images from local database
final int width = getResources().getDisplayMetrics().widthPixels;
final int height = getResources().getDisplayMetrics().heightPixels;
btnDir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mFolderPopupWindow == null) {
createPopupFolderList(width, height);
}
backgroundAlpha(0.3f);
mImageSetAdapter.refreshData(mImageSetList);
mFolderPopupWindow.setAdapter(mImageSetAdapter);
if (mFolderPopupWindow.isShowing()) {
mFolderPopupWindow.dismiss();
} else {
mFolderPopupWindow.show();
int index = mImageSetAdapter.getSelectIndex();
index = index == 0 ? index : index - 1;
mFolderPopupWindow.getListView().setSelection(index);
}
}
});
mImageSetAdapter = new ImageSetAdapter(mContext);
mImageSetAdapter.refreshData(mImageSetList);
return contentView;
}
public void setOnImageItemClickListener(OnItemClickListener l){
this.mOnItemClickListener = l;
}
@Override
public void onImageSelected(int position, ImageItem item, int selectedItemsCount, int maxSelectLimit) {
mAdapter.refreshData(AndroidImagePicker.getInstance().getImageItemsOfCurrentImageSet());
Log.i(TAG,"=====EVENT:onImageSelected");
}
@Override
public void onImageCropComplete(Bitmap bmp, float ratio) {
getActivity().finish();
}
/**
* Adapter of image GridView
*/
class ImageGridAdapter extends BaseAdapter{
L
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android自定义多图片上传控件 (180个子文件)
gradlew.bat 2KB
fileSnapshots.bin 6.25MB
fileHashes.bin 1.15MB
taskArtifacts.bin 180KB
localClassSetAnalysis.bin 104KB
localClassSetAnalysis.bin 69KB
localClassSetAnalysis.bin 69KB
outputFileStates.bin 25KB
localClassSetAnalysis.bin 24KB
localJarClasspathSnapshot.bin 22KB
localJarClasspathSnapshot.bin 20KB
localJarClasspathSnapshot.bin 20KB
localJarClasspathSnapshot.bin 20KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitignore 97B
.gitignore 7B
.gitignore 7B
build.gradle 686B
build.gradle 621B
build.gradle 498B
settings.gradle 38B
gradlew 5KB
app.iml 10KB
androidimagepicker.iml 9KB
ImagePickerViewDemo.iml 950B
gradle-wrapper.jar 52KB
ImagesGridFragment.java 21KB
Attacher.java 18KB
AndroidImagePicker.java 16KB
SuperImageView.java 13KB
ImagePreviewFragment.java 8KB
ImagePickerView.java 8KB
MainActivity.java 8KB
ShowActivity.java 8KB
PreviewDelActivity.java 8KB
PreviewActivity.java 7KB
ScaleDragDetector.java 7KB
ImagePreviewActivity.java 6KB
ImagesGridActivity.java 6KB
PickerActivity.java 6KB
LocalDataSource.java 6KB
PhotoDraweeView.java 4KB
AvatarCropFragment.java 4KB
AvatarRectView.java 3KB
CropActivity.java 3KB
ImageCropActivity.java 3KB
DefaultOnDoubleTapListener.java 3KB
Util.java 2KB
SuperCheckBox.java 2KB
IAttacher.java 2KB
SquareLayout.java 2KB
MainActivity.java 1KB
ImageItem.java 1KB
ImageSet.java 1KB
OnScaleDragGestureListener.java 1KB
OnImagesLoadedListener.java 1011B
OnPhotoTapListener.java 809B
DataSource.java 805B
NoScrollGrid.java 735B
OnViewTapListener.java 697B
OnScaleChangeListener.java 535B
ApplicationTest.java 367B
ApplicationTest.java 353B
ExampleUnitTest.java 329B
ExampleUnitTest.java 315B
baihe.jpg 35KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis.lock 17B
cache.properties.lock 17B
localJarClasspathSnapshot.lock 17B
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis.lock 17B
localClassSetAnalysis.lock 17B
localClassSetAnalysis.lock 17B
localJarClasspathSnapshot.lock 17B
.name 19B
ic_done.png 18KB
default_check.png 16KB
head_photo_preview_circle_mask.png 11KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher.png 5KB
ic_launcher.png 3KB
add_img.png 2KB
ic_launcher.png 2KB
ic_media_item_sel.png 1KB
add_img.png 1KB
add_img.png 1KB
add_img.png 1KB
default_img.png 1KB
ic_back.png 910B
ic_camera.png 799B
bg_btn_dis.9.png 296B
bg_btn_nor.9.png 289B
bg_btn_pre.9.png 279B
text_indicator.png 191B
共 180 条
- 1
- 2
程序员yqy
- 粉丝: 1186
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 细胞的奇迹:吃出来的免疫力(美亚畅销书!作者的TED演讲播放量超300万次!《谷物大脑》作者、《三联生活周刊》推荐!吃下对的食物,改善你的... (Z-Library).azw3
- 智能手机产品拆解,使用mindmaster打开
- 11111111111111
- 统信系统ARM64依赖openssl-1.0.2版本的libssl.so.10和libcrypto.so.10文件
- 奥比中光python sdk
- 冯超楠17.py
- OCR识别-基于视觉注意力机制Attention实现的OCR识别算法-附项目源码-优质项目实战.zip
- Java 使用蒙特卡洛方法估算PI的近似值(源代码)
- main.cpp
- 电子木鱼小程序源码电子木鱼小程序源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页